【问题标题】:CASE WHEN getting the wrong results获得错误结果的案例
【发布时间】:2016-07-11 20:57:01
【问题描述】:

我使用 CASE WHEN 在更新数据之前读取数据(稍后,一旦我选择的 CASE WHEN 功能齐全) 但是,我没有得到正确的结果。

SELECT CASE WHEN INCIDENT_RK = 52080 
        THEN NULL
        ELSE CASE_RK
        END AS CASE_RK

FROM [casemgmt4].[ecmdb4].[INCIDENT_LIVE]

Just one record with the same SELECT statement

但是,它将超过 120 行设为 NULL More than 120 records with the same SELECT statement

如果我的代码有错误,谁能告诉我?

【问题讨论】:

  • 语法应该是 SELECT CASE INCIDENT_RK WHEN 52080 THEN NULL ELSE CASE_RK END AS CASE_RK
  • 如果我使用您的代码,'=' 将带有红色下划线,并显示“'=' 附近的语法不正确”
  • @an33sh - 嗯?在大多数方言中,CASE 有两种变体——其中每个 WHEN 是一个不同的布尔表达式(如在 OP 中),CASE 和第一个 WHEN 之间没有表达式,还有一个是每个 @ 987654328@ 是一个值表达式,将与在CASE 之后计算的单个表达式进行比较。您的更正似乎混合了两种形式。你确定它是正确的?
  • @Damien_The_Unbeliever 你指的是我还是an33sh?
  • @B.Dick:这是完整的查询吗,您使用的是连接吗? CASE_RK 可以是null 吗? INCIDENT_LIVE 是视图吗?如果有,请出示。

标签: sql sas


【解决方案1】:

如果确实只有一条记录有INCIDENT_RK = 52080,那么其他119条记录一定是CASE_RKNULL。自己检查。

SELECT CASE WHEN (INCIDENT_RK = 52080) THEN NULL
            ELSE CASE_RK
       END AS CASE_RK_NEW
     , CASE_RK as CASE_RK_OLD
FROM [casemgmt4].[ecmdb4].[INCIDENT_LIVE]

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 2020-03-01
    • 2023-02-11
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    相关资源
    最近更新 更多