0

まず、私の下手な英語で申し訳ありません:)

次のテーブルデータの例があります。

id 名前 状態 金額
1 name1 オープン 2
1 name1 オープン 3
1 name1 クローズ 4
2 name2 オープン 5
2 name2 クローズ 8
2 name2 クローズ 4


各状態 (オープンまたはクローズ) と名前 (name1 または name2) の金額データを次のように集計したいと考えています。

id name open(合計金額) closed(合計金額)
1 name1 5(2+3) 4
2 name2 5 12(8+4)

誰か助けてくれませんか?

4

2 に答える 2

2

すでに選択された回答とは別に、これを行う別の方法は次のとおりです。

SELECT
     id
    ,name
    ,SUM( IF( state = 'open' ,amount ,0 ) ) open_total
    ,SUM( IF( state = 'closed' ,amount ,0 ) ) closed_total
FROM
    `data`
WHERE
    1
GROUP BY
    name
于 2013-10-19T21:48:22.130 に答える
1
SELECT id, name, 
SUM(CASE WHEN state="open" THEN amount else 0 END) AS `open`,
SUM(CASE WHEN state="closed" THEN amount else 0 END) AS `closed`
FROM <yourtablename>
GROUP BY id;

派生列名の特別な引用符に注意してください。それらを別の種類の引用符に置き換えることはできません。

于 2013-10-19T21:37:07.723 に答える