SUM üzerinde birden çok IF koşuluyla bir rapor için bir sorgu oluşturuyorum. SUM üzerinde bir çok IF koşulunda sorun yaşıyorum.MYSQL Toplam Sorgu, IF Durumu
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
Bu sorgu sadece çalışıyor: İşte
sorgusu olur.aşağıda koşullu SUM deyimi eklemeyi deneyin
:SUM('TotalAmount'(PaymentType = "credit card", 1,0)) AS CreditCardTotal,
Bu EĞER koşullu önerme dışarı başarısız olur.
'TotalAmount' adında bir sütun ve 'PaymentType' adlı bir sütüm var. Her gün kredi kartı işlemlerinin bir SUM'unu oluşturmak için arıyorum, her güne ait çek işlemlerinin bir SUM'u, paypalın bir SUM'u her gün işlem. Bir alt sorgu oluşturmaya çalıştım ancak bu, TotalAmount sütununun tamamına, güne göre bozulmayan bir değer döndürüyor. Bu şekilde bir CASE ile
Awesome! Teşekkürler, bunu kabul edemem ama yapacağım. –
@aleroot 'SUM (CASE WHEN .. THEN .. ELSE .. END)' ve 'SUM (IF (.., .., ..))' arasında yalnızca bir koşulu kontrol etmek istediğimde herhangi bir fark vardır (bazı boolean alan 1 ise? Hangisi daha hızlı olmalı? – NHG
Örneğin: SUM (IF (PaymentType = "kredi kartı", TotalAmount, 0) CreditCardTotal, – George