我有一张这样的桌子。。。

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
祝你好运。

10-06 01:06