1

ここで質問があります..

このテーブルがあるとしましょう...

waktu               |   tglTransaksiJual   | nominal   | ongkir    | STATUS    | idUser
---------------------------------------------------------------------------------------
2013-02-01 00:00:00 | 2013-01-29 15:00:00  | 10000     | 10000     | APPROVED  | 1
0000-00-00 00:00:00 | 2013-02-02 15:00:00  | 20000     | 0         | DONE      | 2
0000-00-00 00:00:00 | 2013-02-02 15:00:00  | 10000     | 5000      | DONE      | 2
2013-02-03 00:00:00 | 2013-02-01 15:00:00  | 20000     | 0         | APPROVED  | 3

そして、私はこのクエリを使用します

SELECT DISTINCT(date(IF(waktu = '0000-00-00 00:00:00', tglTransaksiJual, waktu))) AS thedate, SUM( nominal+ongkir ) AS total
        FROM transaksijual
        WHERE IF(waktu = '0000-00-00 00:00:00', tglTransaksiJual, waktu) BETWEEN '2013-02-01' AND '2013-02-05' AND status LIKE 'DONE%' AND idUser LIKE '2%'    
        GROUP BY thedate
        ORDER BY thedate ASC 

しかし、私が持っている結果は

thedate    | total
-------------------
2013-02-01 | 30000

そして、私が欲しいのはこのようなものです

thedate    | total
------------------
2013-02-01 | 0
2013-02-02 | 35000
2013-02-03 | 0

どうやってやるの??それは可能ですか?? 結論は..データがない場合、0の値を取得して行を取得したい...

4

1 に答える 1

1

条件を削除し、条件が満たされた場合にのみ合計するように列をWHERE更新します。SUM

SUM(IF(status = 'DONE' AND idUser = '2', nominal + ongkir, 0))
于 2013-02-14T04:51:07.340 に答える