2016-04-28 3 views
2

私はアイテムを持つテーブルがあります。特定の月に同じ価格帯の商品を選択するにはどうすればよいですか?

select productId, region, 
    sum(if(mothn =1, range_pr, 0)) AS Jan, sum(if(month = 2, range_pr, 0)) AS feb, 
    sum(if(month= 3, range_pr, 0)) AS Mar 
    from table 
    where range_pr=100 
group by productId, region 
を:range_prc = 100ヶ月の1から3

これは私がこれまでにしようとしているものですしたことpriductIdを選択する方法

ProductId Month range_prc Price Region 
    1001  1  101   88  10 
    1002  1  100   44  10 
    1003  1  100   34  20 
    1001  2  88   88  10 
    1002  2  100   54  10 
    1003  2  100   34  20 
    1001  3  100   33  10 
    1002  3  100   23  10 
    1003  3  100   13  20 
    1001  4  102   56  20 

となり、結果は

ProductId Region Jan Feb Mar 
    1001  10  0 0 100 
    1002  10  100 100 100 
    1003  20  100 100 100 

となりますが、プロこのような3つの期間に同じrange_prcを持つダクト:

ProductId Region Jan Feb Mar 
    1002  10  100 100 100 
    1003  20  100 100 100 

答えて

1

あなたがHAVING使用することができます。

select productId, region, 
     sum(if(month=1, range_pr, 0)) AS Jan, 
     sum(if(month=2, range_pr, 0)) AS Feb, 
     sum(if(month=3, range_pr, 0)) AS Mar 
from table 
group by productId, region 
having Jan = 100 AND Feb = 100 AND Mar = 100; 

それとも、サブクエリを使用することができます

select * 
from (
    select productId, region, 
     sum(if(month=1, range_pr, 0)) AS Jan, 
     sum(if(month=2, range_pr, 0)) AS Feb, 
     sum(if(month=3, range_pr, 0)) AS Mar 
    from table 
    group by productId, region 
) p 
WHERE Jan = 100 AND Feb = 100 AND Mar = 100; 
+1

私はあなたがあなたの別名を使用することができると思うが「HAVING」の中で。 – shmosel

+0

@shmosel私はちょうど 'HAVING'のエイリアスをテストし、クール:)私は答えを更新する –

+0

それは非常に@ZiggyCrueltyfreeZeitgeister – Wirjoe

関連する問題