Kueri Jumlah MYSQL dengan Kondisi IF

Saya sedang membuat kueri untuk laporan dengan beberapa kondisi IF pada SUM. Saya mengalami masalah dengan beberapa kondisi IF pada SUM.

Berikut adalah kueri:

SELECT SUM(`totalamount`) AS Total, 
SUM(`PayPalFee`) AS Fees,
DATE(`TransactionDate`) AS `Day`, 
SUM(IF(PaymentType = "paypal", 1,0)) AS Paypal, 
SUM(IF(PaymentType = "check", 1,0)) AS Checks, 
SUM(IF(PaymentType = "credit card", 1,0)) AS CreditCard, 
COUNT(*) AS Entries
 FROM my_table
 WHERE TransactionDate between '2011-05-05' AND '2012-01-30'
 GROUP BY day
 ORDER BY `day` ASC

Kueri ini berfungsi dengan baik.

Ketika saya mencoba menambahkan pernyataan SUM bersyarat di bawah ini:

 SUM('TotalAmount'(PaymentType = "credit card", 1,0)) AS CreditCardTotal,

Pernyataan IF bersyarat ini gagal.

Saya memiliki kolom yang disebut ' TotalAmount ' dan kolom yang disebut ' Jenis Pembayaran ' Saya ingin membuat SUM dari transaksi kartu kredit setiap hari, SUM dari transaksi cek setiap hari, SUM dari transaksi paypal setiap hari,. Saya telah mencoba membuat subquery tetapi ini mengembalikan nilai untuk seluruh kolom TotalJumlah, tidak dipecah berdasarkan hari.

Larutan

Cobalah dengan CASE dengan cara ini:

SUM(CASE 
    WHEN PaymentType = "credit card" 
    THEN TotalAmount 
    ELSE 0 
END) AS CreditCardTotal,

Akan memberikan apa yang Anda cari ...

Komentar (6)

Bagaimana dengan ini?

SUM(IF(PaymentType = "credit card", totalamount, 0)) AS CreditCardTotal
Komentar (2)