我有一个SQL表,其中包含以下列和数据:
<表类>
ITEM_ID
CUST_ID
数量类型 PARENT_ID tbody><<tr>12 34道明> 生 空 1334道明> 精制 12 15 34 300 精制 12 1741 4500 生 空 18 41 1500 精制 17 23 41 3500 精制 空 24 41 6000 生 空 25 41 1460 精制 24 表类>
一个conditional sum
就是你所需要的,以下是你想要的结果:
select cust_Id,
Sum(case when type='refined' then amount else 0 end) Refined_Amount,
Sum(case when type='RAW' and PARENT_ID is null then amount end)
- Sum(case when type='refined' and parent_id is not null then amount else 0 end) Unrefined_Amount
from t
group by cust_id
使用条件聚合:
SELECT CUST_ID,
SUM(CASE WHEN TYPE = 'REFINED' THEN AMOUNT ELSE 0 END) REFINED_AMOUNT,
SUM(CASE
WHEN TYPE = 'RAW' AND PARENT_ID IS NULL THEN 1
WHEN TYPE = 'REFINED' AND PARENT_ID IS NOT NULL THEN -1
ELSE 0
END * AMOUNT
) UNREFINED_AMOUNT
FROM tablename
GROUP BY CUST_ID