订单表order有以下字段
goodid, --编号
qty, --数量
wgt, --重量
type, --计量类型
如果要统计它们的数、重量,这好办:
select sum(qty), sum(wgt) from order group by goodid但现在有一个条件上:type为0时,重量有效、数量无效,非0则数量有效、重量无效,如果要统计有效的数量和重量,怎么写?
goodid, --编号
qty, --数量
wgt, --重量
type, --计量类型
如果要统计它们的数、重量,这好办:
select sum(qty), sum(wgt) from order group by goodid但现在有一个条件上:type为0时,重量有效、数量无效,非0则数量有效、重量无效,如果要统计有效的数量和重量,怎么写?
select 数量质量=case type when 1 then sum(qty) else sum(wgt) end from t group by goodid,type
from order group by goodid
INSERT INTO @T
SELECT 1 , 20 , 30 , 1 UNION ALL
SELECT 1 , 10 , 50 , 0 UNION ALL
SELECT 2 , 20 , 30 , 0 UNION ALL
SELECT 2 , 10 , 50 , 1
SELECT GOODID,
SUM(CASE TYPE WHEN 0 THEN WGT END) AS WGT,
SUM(CASE WHEN CAST(TYPE AS INT) <> 0 THEN QTY END) AS QTY
FROM
@T
GROUP BY GOODID