2015-10-07 27 views
1

我希望有人能幫助,我的情況:如何從「情況當」數條件

如何從我的情況時開始計數狀態在我的SQL代碼:

SELECT CASE WHEN datediff(b.`DATE` , A.`SUBMIT_DATE`) >3 
THEN 'NOK' 
ELSE 'OK' 
END AS 
STATUS FROM complaint a 
LEFT JOIN handling b ON a.cid = b.cid 

enter image description here

+2

'SELECT狀態,COUNT(*)FROM投訴GROUP BY status'你試試這個 –

回答

0

它只是應該是這樣的:d哈哈:

Select status,count(*) 
From 
(
SELECT CASE WHEN datediff(b.`DATE` , A.`SUBMIT_DATE`) >3 THEN 'NOK' ELSE 'OK' END AS STATUS FROM complaint a LEFT JOIN handling b ON a.cid = b.cid 
) a 
Group by status 
0

試試下面查詢 -

SELECT CASE WHEN DATEDIFF(b.`DATE` , A.`SUBMIT_DATE`) >3 THEN 'NOK' ELSE 'OK' END AS mystatus, 
SUM(IF(DATEDIFF(b.`DATE` , A.`SUBMIT_DATE`) >3,1,0)) AS cnt 
FROM complaint a 
LEFT JOIN handling b ON a.cid = b.cid 
GROUP BY mystatus; 
1
SELECT 
    CASE 
     WHEN datediff(b.`DATE` , A.`SUBMIT_DATE`) >3 THEN 'NOK' 
     ELSE 'OK' 
    END AS STATUS 
FROM complaint a 
LEFT JOIN handling b ON a.cid = b.cid 
GROUP BY CASE 
      WHEN datediff(b.`DATE` , A.`SUBMIT_DATE`) >3 THEN 'NOK' 
      ELSE 'OK' 
     END 

或者,您可以打開狀態(OK,NOK)到不同的列:

SELECT 
    COUNT CASE WHEN datediff(b.`DATE` , A.`SUBMIT_DATE`) >3 THEN 1 END) AS 'NOK', 
    COUNT CASE WHEN datediff(b.`DATE` , A.`SUBMIT_DATE`) <=3 THEN 1 END) AS 'OK' 
FROM complaint a LEFT JOIN handling b ON a.cid = b.cid