2012-03-08 7 views
2

私はテーブル構造を持つグループ化 - TSQL

表1

ID Hours Qty  ProductID 
1 2  1  100 
1 3  5  200 
2 6  6  100 
2 2  2  200 

のProductIDが(1,2,3)である場合のProductID場合、私は、合計(数量*時間)が必要です(200,300,400,500)で、合計(qty)が必要です。

私はこの

select ID,case when productid in (1,2,3) then 
      SUM(qty * hrs) 
      when productid in (100,200,300) then SUM(qty) end result1 

from Prod group by id ,productid 

のようなコードを書かれているが、私はそれを達成するために.How「IN句」でそれを渡したい、商品コードによってグループにしたくありません。

答えて

2

SUM()CASE WHENステートメントの外側に移動します。

あなたがこれを行うことができ、あなたはすべての列に加えて、クエリの結果をしたいと仮定すると、
SELECT 
    ID, 
    SUM(case when productid in (1,2,3)  then qty * hrs 
      when productid in (100,200,300) then qty 
     end) result1 
FROM 
    Prod 
GROUP BY 
    ID 
0

select p.*, aux.result 
from Prod p 
inner join (select ID,case when productid in (1,2,3) then SUM(qty * hrs) 
          when productid in (100,200,300) then SUM(qty) 
         end as result 
      from Prod group by id ,productid) aux on aux.id = p.id 
+0

はどうもありがとうございました – user1256813

関連する問題