2

私はこのようなテーブルを持っています...

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 に設定する必要があります)

これはクエリで達成できますか?

4

2 に答える 2

1

私はこのようなものがうまくいくはずだと思います:

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があります。

幸運を。

于 2013-02-10T22:18:23.077 に答える
1

これを試して:

SELECT
   supplier_name,
   SUM(COALESCE(CASE WHEN status = 'unavailable' THEN  `count` END, 0)) unavailable,
   SUM(COALESCE(CASE WHEN status = 'refunded' THEN  `count` END, 0)) refunded,
   SUM(COALESCE(CASE WHEN status = 'shipped' THEN  `count` END, 0)) shipped
FROM tbl
GROUP BY supplier_name 

SQL フィドルのデモ

于 2013-02-10T22:15:01.750 に答える