0

このようなテーブルがあります

TYPE      AMOUNT  

purc    100
sale    120
sale    80
purc    150
sale    50
sale    70
sale    120
purc    60

このクエリ「select type, sum(AMOUNT) as amount from MyTable GROUP by type」を実行すると、次のような 2 つの結果セットを取得できます

TYPE     AMOUNT
purc    310
sale    440

しかし、販売と購入のみの1つのクエリで単一の結果が必要です

SALE   PURC   PROFIT
440    310    130

その単一のクエリは何ですか?

4

1 に答える 1

5

これを試して:

SELECT
  SUM(IF(`TYPE` = 'purc', `AMOUNT`, 0)) as `PURC`,
  SUM(IF(`TYPE` = 'sale', `AMOUNT`, 0)) as `SALE`
FROM `MyTable`

これにより、テーブルでいわゆるピボットが実行されます。

CASEの代わりに使用IF:

SELECT
  SUM(CASE `TYPE` WHEN 'purc' THEN `AMOUNT` ELSE 0 END) as `PURC`,
  SUM(CASE `TYPE` WHEN 'sale' THEN `AMOUNT` ELSE 0 END) as `SALE`
FROM `MyTable`
于 2013-07-11T07:58:04.087 に答える