【问题标题】:Replace NULL with 0将 NULL 替换为 0
【发布时间】:2020-11-20 20:32:56
【问题描述】:

我有以下CASE 表达式,它将数据分成不同的类别并附加相应的时间。

case
when Wstat_Name_Ch like '%Overtime signup%' then payhours
end as All_OT_Signup,
case
when  Wstat_Abrv_Ch in ('CO', 'COU', 'Otnoshow') then payhours
end as OT_Removed,
case
when  Wstat_Abrv_Ch in ('Ov', 'OTField', 'MinStafotp', 'OvUpsOT') then payhours
end as OT_Hours_Worked

语句返回数据如下:

All_OT_Signup    OT_Removed   OT_Hours_Worked
500.00            NULL         NULL
350.00            150.00       100.00
200.00            NULL         NULL

我需要做的是将任何 NULL 替换为 0。我尝试用 ISNULL(payhours, 0) 代替 payhours,但它不起作用。

【问题讨论】:

  • 提示:ELSE 表示 CASE 表达式。

标签: sql sql-server case sql-null


【解决方案1】:

只需为每个case 表达式添加一个else 分支,当第一个条件不匹配时返回0

case
    when Wstat_Name_Ch like '%Overtime signup%' then payhours
    else 0
end as All_OT_Signup,
case
    when  Wstat_Abrv_Ch in ('CO', 'COU', 'Otnoshow') then payhours
    else 0
end as OT_Removed,
case
    when  Wstat_Abrv_Ch in ('Ov', 'OTField', 'MinStafotp', 'OvUpsOT') then payhours
    else 0
end as OT_Hours_Worked

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2018-12-28
    • 2019-09-27
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多