2016-05-17 5 views
1

Das Datum wird jetzt als NULL angezeigt, wenn der Zählerstand 0 ist. Gibt es irgendwelche Ideen, wie das Datum angezeigt werden kann?Benötigtes Datum, um anzuzeigen, anstatt Null zu sein

SELECT 
    dc.dateasdate AS 'Date', 
    CASE 
     WHEN dc.dateasdate IS NULL THEN '0' 
     ELSE COUNT(Practice) 
    END AS 'Total Enquiries', 
    dp.practice, 
    de.Origin 
FROM dim.Practice dp 
LEFT JOIN fact.enquiry fe 
    ON fe.PracticeSKey = dp.PracticeSKey 
LEFT JOIN dim.EnquiryOrigin de 
    ON de.EnquiryOriginSKey = fe.EnquiryOriginSKey 
    AND de.Origin = 'Web Enquiry' 
LEFT JOIN dim.Calendar dc 
    ON dc.CalendarSKey = fe.EnquiryCreatedSKey 
    AND dc.dateasdate = '2016-04-03' 
WHERE 
    de.Origin IS NOT NULL 
GROUP BY 
    dc.dateasdate, 
    de.Origin, 
    practice 
ORDER BY dc.dateasdate, Practice 
+0

Verwenden Sie MySQL oder SQL Server? –

+0

Was ist Ihre Absicht? Zeigen Sie ein 'Standarddatum 'als' Datum 'an, wenn dc.dateasdate null ist oder ** force ** ein Datum anzeigt, selbst wenn es' NULL' ist? –

+0

erzwingen zeigt das Datum, wenn das Datum Null ist – ebjdnh

Antwort

0

Ich glaube, Sie wollen folgendes:

case WHEN COUNT(Practice) is null THEN '0' ELSE COUNT(Practice) END AS 'Total Enquiries' 
0

Hmmm. . . Sie sollten die Typen bleiben die gleiche:

SELECT dc.dateasdate, 
     (case WHEN dc.dateasdate is null THEN 0 ELSE COUNT(Practice) END) AS TotalEnquiries, 
     dp.practice, 
     de.Origin 

jedoch das Datum als NULL zeigen, weil der Wert NULL in den Originaldaten ist. Welchen Wert möchten Sie in diesem Fall zeigen?

EDIT:

können Sie COALESCE() verwenden:

SELECT COALESCE(dc.dateasdate, '2016-04-03') 
     (case WHEN dc.dateasdate is null THEN 0 ELSE COUNT(Practice) END) AS TotalEnquiries, 
     dp.practice, 
     de.Origin 
. . . 

Allerdings vermute ich, dass die LEFT JOIN ist nicht das, was Sie wirklich wollen.

+0

Ich möchte nur das Datum 2016-04-03 – ebjdnh

+0

Ich möchte das Datum anzeigen, dass wir abfragen, da 2016-04-03 ist das Beispieldatum im Verwendung, aber nachdem ich fertig bin, werde ich die Ergebnisse der letzten Monate abfragen. so schlecht müssen 0 für das Datum zeigen wir – ebjdnh

+0

Gordon, gibt es einen Grund, nicht 'COALSCE()' hier (nur wundernd) zu verwenden? –

Verwandte Themen