2016-05-17 3 views
1

カウントが0のときに日付がNULLとして表示されていますが、日付を表示する方法はありますか?ヌルではなく表示する日付が必要

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

MySQLまたはSQL Serverを使用していますか? –

+0

あなたの意図は何ですか? dc.dateasdateがnullの場合は 'Date'、デフォルトの日付の場合は** force **はNULLでも日付を表示します。 –

+0

日付がNULLである日付を示す力 – ebjdnh

答えて

0

私はあなたが次のことをしたいと考えている:

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

うーん。 。 。あなたは、同じ種類を維持する必要があります。

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

値は、元のデータでNULLあるのでしかし、日付がNULLとして表示されます。この場合、どのような価値を示したいですか?

EDIT:

あなたはCOALESCE()を使用することができます。

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 
. . . 

しかし、私はLEFT JOINは、あなたが本当に望むものではないと思われます。

+0

私はちょうど日付が欲しい2016-04-03 – ebjdnh

+0

私は2016-04-03がサンプルの日付なので、私たちが照会している日付を表示したい私が行った後、最後の月の結果を照会するつもりです。私たちが照会している日に0を表示する必要がある – ebjdnh

+0

ゴードン、ここでは「COALSCE()」を使用しない理由がありますか? –

関連する問題