【问题标题】:SQL Server: CASE WHEN with temp tables syntax errroring outSQL Server:CASE WHEN 出现临时表语法错误
【发布时间】:2018-04-27 18:41:10
【问题描述】:

我试图实现的逻辑如下:用特定列的其他字符串替换某些字符串。

将不需要替换的字符串值保留为其原始值。

   SELECT * INTO #df_ERA4_a_temp 
            CASE WHEN [REQMNT] = 'A CHEC' THEN 'A CHECK'   
                 WHEN [REQMNT] = 'A-12' THEN 'A12'
                 WHEN [REQMNT] = 'A-9' THEN 'A9'
                 WHEN [REQMNT] = 'ADS-B' THEN 'ADSB' 
                 WHEN [REQMNT] = 'ADWK' THEN 'ADWORK'
                 WHEN [REQMNT] = 'ALI-W' THEN 'ALI-WRK'
                 ELSE [REQMNT]
            END  
    FROM #df_ERA4_a

错误:消息 156,级别 15,状态 1,第 129 行 关键字“CASE”附近的语法不正确。

【问题讨论】:

  • 在大小写之前缺少选择

标签: sql string if-statement replace case


【解决方案1】:

看看有没有帮助

SELECT 
      CASE WHEN [REQMNT] = 'A CHEC' THEN 'A CHECK'   
                     WHEN [REQMNT] = 'A-12' THEN 'A12'
                     WHEN [REQMNT] = 'A-9' THEN 'A9'
                     WHEN [REQMNT] = 'ADS-B' THEN 'ADSB' 
                     WHEN [REQMNT] = 'ADWK' THEN 'ADWORK'
                     WHEN [REQMNT] = 'ALI-W' THEN 'ALI-WRK'
                     ELSE [REQMNT] END, 
     * INTO #df_ERA4_a_temp                
        FROM #df_ERA4_a

【讨论】:

    【解决方案2】:
    SELECT * INTO #df_ERA4_a_temp
    FROM
    (SELECT CASE WHEN [REQMNT] = 'A CHEC' THEN 'A CHECK'   
                 WHEN [REQMNT] = 'A-12' THEN 'A12'
                 WHEN [REQMNT] = 'A-9' THEN 'A9'
                 WHEN [REQMNT] = 'ADS-B' THEN 'ADSB' 
                 WHEN [REQMNT] = 'ADWK' THEN 'ADWORK'
                 WHEN [REQMNT] = 'ALI-W' THEN 'ALI-WRK'
                 ELSE [REQMNT]
            END  
    FROM #df_ERA4_a) a
    

    【讨论】:

    • 这是我得到的错误:无效的对象名称'#df_ERA5_a_temp'。
    • @PineNuts0 - 我知道你正在尝试选择 temp,我修改了查询
    猜你喜欢
    • 2023-02-23
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2022-01-18
    • 2014-11-17
    • 2013-10-07
    • 2020-11-05
    • 1970-01-01
    相关资源
    最近更新 更多