2010-11-23 20 views
3
SELECT COUNT(w.invoiceId) AS '10 Days' FROM tbl_Invoice w 
WHERE w.invoiceId NOT IN(
SELECT inv.invoiceId FROM tbl_InvoiceAllocation inv) 
AND w.invoiceDate < DATE_SUB(curdate(), INTERVAL 10 DAY) 

これは正常に動作し、10日以上前の日付を持つすべての請求書の数を返します。同じクエリで20日以上100日以上経過している請求書のカウントを返すようにしたいと考えています。以下のような0MySql Count同じ列複数回

何かとして1と真の値と偽の値を持つCASE文として指定されたWHERE句を使用して、

10 Days 20 Days 100 Days 

350  280  90 
+0

http://stackoverflow.com/questions/2300020/mysql-multiple-counts-in-single-query同じテーブルに参加する必要が残され、これは働いていた –

答えて

5

変更SUMにCOUNT、:だから理想的クエリは、このようなものを返します

SELECT SUM(CASE WHEN w.invoiceDate < DATE_SUB(curdate(), INTERVAL 10 DAY) THEN 1 ELSE 0 END) AS '10 Days', 
     SUM(CASE WHEN w.invoiceDate < DATE_SUB(curdate(), INTERVAL 20 DAY) THEN 1 ELSE 0 END) AS '20 Days' 
FROM tbl_Invoice w 
WHERE w.invoiceId NOT IN( 
          SELECT inv.invoiceId 
          FROM tbl_InvoiceAllocation inv) 
AND  w.invoiceDate < DATE_SUB(curdate(), INTERVAL 20 DAY) 
+0

おかげでこれを見るが、 そしてWなし.invoiceDate Pjn2020

関連する問題