我有以下查询来创建一个以天为列的数据透视表:
SELECT USERID,
CASE WHEN DATEPART(d,DATE) = 26 THEN sick END [26],
CASE WHEN DATEPART(d,DATE) = 27 THEN sick END [27],
CASE WHEN DATEPART(d,DATE) = 28 THEN sick END [28],
/* other days omitted */
CASE WHEN DATEPART(d,DATE) = 25 THEN sick END [25]
FROM tbl_Chktime
WHERE DATE BETWEEN '2017-12-26' AND '2017-12-28'
AND USERID = '15831'
当我运行此查询时,这是我的输出:
USERID | 26 | 27 | 28
15831 0.00 NULL NULL
15831 NULL 0.00 NULL
15831 NULL NULL 0.00
Here is an image of the full output
我不想要那些NULL值。相反,我更喜欢将它显示为0.00
,类似于:
USERID | 26 | 27 | 28
15831 0.00 0.00 0.00
如何更改我的SQL语句,使其输出0.00而不是null?
答案 0 :(得分:0)
如果您手动停止转动,并且让SQL服务器为您创建转轴,则可以轻松实现此目的:
SELECT * FROM
(SELECT USERID, DATEPART(d,DATE) pivotHeading, sick
FROM tbl_Chktime
WHERE DATE BETWEEN '2017-12-26' AND '2017-12-28'
AND USERID = '15831') src
PIVOT (Max(sick) FOR pivotHeading IN ([25], [26], [27], [28])) pt
这样,添加新日期并不会延长查询长度,而且语句更短。