我有一张这样的桌子。。。
supplier_name status count
supplier_a Unavailable 1
supplier_a Refunded 5
supplier_a Shipped 10
supplier_z Refunded 2
supplier_z Shipped 4
我知道我想要什么列,我想使用第一个表中的值来返回如下结构的值。。。
supplier_name unavailable refunded shipped
supplier_a 1 5 10
supplier_z 0 2 4
(注意:如果特定列没有值,则应将其设置为0)
这可能在查询中实现吗?
最佳答案
我想这样的办法应该行得通:
SELECT Supplier_Name,
MAX(CASE WHEN STATUS = 'Unavailable' THEN Count ELSE 0 END) as Unavailable,
MAX(CASE WHEN STATUS = 'Refunded' THEN Count ELSE 0 END) as refunded,
MAX(CASE WHEN STATUS = 'Shipped' THEN Count ELSE 0 END) as shipped
FROM YourTable
GROUP BY Supplier_Name
这里是SQL Fiddle。
祝你好运。