有没有办法在SQL中获得以下输出

时间:2018-02-15 07:19:33

标签: mysql sql

我有一张桌子(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

提前谢谢

2 个答案:

答案 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