我有一张桌子(product_tb):
id product unit quantity
---- --------- ------ ----------
1 A 1kg 100
2 B 1kg 50
3 A 5kg 50
我希望输出为:
product 1kg 2kg 5kg
--------- ----- ----- -----
A 100 0 50
B 50 0 0
提前谢谢
答案 0 :(得分:0)
是CASE WHEN和聚合。试试这个:
SELECT product, SUM(CASE WHEN unit='1kg' THEN quantity ELSE 0 END) AS '1kg',
SUM(CASE WHEN unit='2kg' THEN quantity ELSE 0 END) AS '2kg',
SUM(CASE WHEN unit='5kg' THEN quantity ELSE 0 END) AS '5kg'
FROM YourTable
GROUP BY product, unit;
添加总数:
SELECT product, SUM(CASE WHEN unit='1kg' THEN quantity ELSE 0 END) AS '1kg',
SUM(CASE WHEN unit='2kg' THEN quantity ELSE 0 END) AS '2kg',
SUM(CASE WHEN unit='5kg' THEN quantity ELSE 0 END) AS '5kg',
SUM(quantity) AS Total
FROM YourTable
GROUP BY product, unit;
答案 1 :(得分:0)
大多数DBMS支持PIVOT
运营商
select * from
(
select Product, Unit, quantity from table
) t
pivot
(
max(quantity) for Unit in([1kg], [2kg] ,[5kg])
)a