Sql 需要显示日期而不是空值
当计数为0时,日期现在显示为空,如何让它显示日期Sql 需要显示日期而不是空值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,当计数为0时,日期现在显示为空,如何让它显示日期 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
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
我相信你想要的是:
case WHEN COUNT(Practice) is null THEN '0' ELSE COUNT(Practice) END AS 'Total Enquiries'
我相信你想要的是:
case WHEN COUNT(Practice) is null THEN '0' ELSE COUNT(Practice) END AS 'Total Enquiries'
嗯。您应该保持类型相同:
SELECT dc.dateasdate,
(case WHEN dc.dateasdate is null THEN 0 ELSE COUNT(Practice) END) AS TotalEnquiries,
dp.practice,
de.Origin
但是,日期显示为NULL
,因为原始数据中的值为NULL
。在这种情况下,您希望显示什么值
编辑:
您可以使用COALESCE()
:
然而,我怀疑
左连接不是您真正想要的。您应该保持类型相同:
SELECT dc.dateasdate,
(case WHEN dc.dateasdate is null THEN 0 ELSE COUNT(Practice) END) AS TotalEnquiries,
dp.practice,
de.Origin
但是,日期显示为NULL
,因为原始数据中的值为NULL
。在这种情况下,您希望显示什么值
编辑:
您可以使用COALESCE()
:
但是,我怀疑左连接不是您真正想要的。您使用的是MySQL还是SQL Server?您的意图是什么?dc.dateasdate为空时,将默认日期显示为“日期”,或者强制显示日期,即使它为null
?强制显示日期为空时的日期对不起,im使用SQL Server您使用的是MySQL还是SQL Server?您的意图是什么?当dc.dateasdate为空时,将默认日期显示为'date',或者强制显示日期,即使它为空
?强制显示日期为空时的日期对不起,我使用SQL Server我只想显示日期2016-04-03我想显示我们正在查询的日期,因为2016-04-03是我使用的示例日期,但在im完成之后,我将查询最近几个月的结果。所以我需要为我们查询的日期显示0 Gordon,是否有任何理由不在此处使用COALSCE()
(只是想知道)?SELECT COALESCE(dc.dateasdate,'2016-04-03')唯一的问题是2016-04-03是我的样本数据集,最终脚本将更改为查询上个月的结果OK我计算出来了,需要交叉连接和硬编码来源谢谢大家的帮助我只想要2016-04-03日期我想显示我们正在查询的日期,因为2016-04-03是我使用的示例日期,但在我完成后,我将查询最后几个月的结果。所以我需要为我们查询的日期显示0 Gordon,是否有任何理由不在此处使用COALSCE()
(只是想知道)?SELECT COALESCE(dc.dateasdate,'2016-04-03')唯一的问题是2016-04-03是我的样本数据集,最终脚本将更改为查询上个月的结果OK我计算出来了,需要交叉连接和硬编码源代码谢谢大家的帮助