我已经开发了一个查询,在前三列的结果中,我得到了NULL
。如何将其替换为0
?
Select c.rundate,
sum(case when c.runstatus = 'Succeeded' then 1 end) as Succeeded,
sum(case when c.runstatus = 'Failed' then 1 end) as Failed,
sum(case when c.runstatus = 'Cancelled' then 1 end) as Cancelled,
count(*) as Totalrun from
( Select a.name,case when b.run_status=0 Then 'Failed' when b.run_status=1 Then 'Succeeded'
when b.run_status=2 Then 'Retry' Else 'Cancelled' End as Runstatus,
---cast(run_date as datetime)
cast(substring(convert(varchar(8),run_date),1,4)+'/'+substring(convert(varchar(8),run_date),5,2)+'/' +substring(convert(varchar(8),run_date),7,2) as Datetime) as RunDate
from msdb.dbo.sysjobs as a(nolock) inner join msdb.dbo.sysjobhistory as b(nolock)
on a.job_id=b.job_id
where a.name='AI'
and b.step_id=0) as c
group by
c.rundate
发布于 2013-05-30 23:49:22
当您想用其他东西替换可能的null
列时,可以使用IsNull。
SELECT ISNULL(myColumn, 0 ) FROM myTable
这将把一个0放在myColumn中,如果它一开始就是空的。
发布于 2013-05-30 23:49:03
使用coalesce
coalesce(column_name,0)
不过,在对when condition then 1
求和时,您可以同样轻松地将sum
更改为count
-例如:
count(case when c.runstatus = 'Succeeded' then 1 end) as Succeeded,
(Count(null)
返回0,而sum(null)
返回null。)
发布于 2019-10-29 22:27:45
如果您使用的是Presto、AWS Athena等,则没有ISNULL()函数。取而代之的是:
SELECT COALESCE(myColumn, 0 ) FROM myTable
https://stackoverflow.com/questions/16840522
复制相似问题