Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 需要显示日期而不是空值_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 需要显示日期而不是空值

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

当计数为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
    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我计算出来了,需要交叉连接和硬编码源代码谢谢大家的帮助