Tôi đang tạo truy vấn cho báo cáo có nhiều điều kiện IF trên SUM. Tôi gặp sự cố với nhiều điều kiện IF trên SUM.Truy vấn tổng MYSQL với điều kiện IF
Đây là truy vấn:
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
Truy vấn này chỉ hoạt động tốt.
Khi tôi cố gắng thêm các tuyên bố SUM dưới đây có điều kiện:
SUM('TotalAmount'(PaymentType = "credit card", 1,0)) AS CreditCardTotal,
này có điều kiện IF tuyên bố không ra.
Tôi có một cột được gọi là 'TotalAmount' và một cột được gọi là 'PaymentType' Tôi đang tìm cách tạo SUM của giao dịch thẻ tín dụng mỗi ngày, SUM của séc kiểm tra mỗi ngày, SUM của paypal giao dịch theo từng ngày. Tôi đã thử tạo truy vấn phụ nhưng điều này trả về một giá trị cho toàn bộ cột TotalAmount, không được chia nhỏ theo ngày.
Tuyệt vời! Cảm ơn bạn, tôi không thể chấp nhận điều này được nêu ra nhưng tôi sẽ. –
@aleroot là có bất kỳ sự khác biệt nào giữa 'SUM (CASE WHEN .. THEN .. ELSE .. END)' và 'SUM (IF (.., .., ..))' khi tôi muốn chỉ kiểm tra một điều kiện (nếu một số trường boolean là 1)? Ý tôi là, cái nào nên nhanh hơn? – NHG
Có thể được thực hiện như một ví dụ: 'SUM (IF (PaymentType =" thẻ tín dụng ", TotalAmount, 0) AS CreditCardTotal,' – George