2016-05-17 3 views
1

Дата показывается как NULL теперь, когда число равно 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 или ** force **, показывая дату, даже если она «NULL»? –

+0

сила, показывающая дату, когда дата равна нулю – 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 является образцом даты im используя, но после того, как я сделал, я собираюсь запросить результаты за последние месяцы. поэтому мне нужно показать 0 для даты, которую мы запрашиваем – ebjdnh

+0

Гордон, есть ли причина не использовать 'COALSCE()' здесь (просто интересно)? –

Смежные вопросы