2017-10-24 4 views
1
SELECT SUM(CASE WHEN is_half = 1 THEN 1 ELSE 0 END) halfCount, SUM(CASE 
WHEN is_half = 0 THEN 1 ELSE 0 END) totalCount FROM employee_leave WHERE 
YEAR(leave_date_from) = YEAR(CURRENT_DATE()) AND employee_id="EMP12" AND 
leave_status=1 

Mit dieser Abfrage ich Ergebnisse bin immer als (Wenn es keine Werte):mysql mehrere Zählungen in einer einzigen Abfrage

halfCount | totalCount 
NULL  | NULL 

Wie kann ich 0 statt NULL?

gewünschte Ausgabe:

halfCount | totalCount 
0   | 0 
+0

Ich denke, [ 'COALESCE'] (https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql) können Sie – Swellar

+0

helfen Wie kann Ich benutze es mit meiner Abfrage? – Debu

Antwort

0

Angenommen, Ihre Abfrage richtig ist, können Sie COALESCE ändern null in 0 (oder eine andere Nummer)

SELECT COALESCE(SUM(CASE WHEN is_half = 1 THEN 1 ELSE 0 END), 0) as 'halfCount', 
COALESCE(SUM(CASE WHEN is_half = 0 THEN 1 ELSE 0 END), 0) as 'totalCount' 
FROM employee_leave 
WHERE YEAR(leave_date_from) = YEAR(CURRENT_DATE() 
    AND employee_id="EMP12" 
    AND leave_status=1 

Ich bin nicht wirklich sicher nutzen wenn dies fehlerfrei ist, wie ich es in meinem Gerät nicht testen kann, aber so ist es zu verwenden COALESCE

0

versuchen Sie dies

SELECT IFNULL(SUM(CASE WHEN is_half = 1 THEN 1 ELSE 0 END),0) halfCount, IFNULL(SUM(CASE 
WHEN is_half = 0 THEN 1 ELSE 0 END),0) totalCount FROM employee_leave WHERE 
YEAR(leave_date_from) = YEAR(CURRENT_DATE()) AND employee_id="EMP12" AND 
leave_status=1 
+0

versuchen Sie auch "ISNULL". –

+0

SELECT ISNULL (IFNULL (SUM (CASE WENN is_half = 1 THEN 1 ELSE 0 ENDE), 0), 0) halfCount, ISNULL (IFNULL (SUMME (CASE WENN is_half = 0 DANN 1 ELSE 0 ENDE), 0), 0) totalcount VON employee_leave WHERE YEAR (leave_date_from) = YEAR (CURRENT_DATE()) und employee_id = "EMP12" UND leave_status = 1 Sollte ich es auf diese Weise verwenden? @romal tandel – Debu

Verwandte Themen