不同字段的案例陈述

时间:2017-08-28 21:21:47

标签: sql-server

怎么写呢?

我需要检查几个字段的各种条件,以确定是否标记记录Y或N以保留它。 (我试图从不符合某些标准的报告中排除某些记录。)

在此示例中,我将表别名为ES,CQI,NA和CC。所以我需要像

这样的东西
CASE 
          WHEN SD.CType = N'ALT' AND ES.SERVICE = N'Alerts' THEN 'N'
          WHEN SD.CType = N'ALT' AND ES.SERVICE <> N'Alerts' THEN 'Y' 
          WHEN SD.CType <> N'ALT' AND ES.SERVICE <> N'Alerts' THEN 'Y' 
          WHEN SD.CType = 'BPY' AND CQI.PTYPE = 'BP' THEN 'Y'
          WHEN SD.CType <> 'BPY' AND CQI.PTYPE = 'BP' THEN 'N'
          WHEN SD.CType <> 'BPY' AND NA.BILL = 'Y' THEN 'Y' 
          WHEN SD.CType = 'BPY' AND NA.BILL = 'Y' THEN 'N'    
          WHEN SD.CType = 'LEN' AND CC.PTYPE <> 'CC' THEN 'Y'
          WHEN SD.CType = 'LEN' AND CC.PTYPE = 'CC' THEN 'N'
          ELSE 'Y'
       END    
          AS Keep

基本上这些都包含SD.CType值,然后它们与3个其他字段中的值组合。我可以在VB中编写一个SELECT CASE语句来执行此操作,但我需要在SQL中运行它。

我感谢任何建议......谢谢!

1 个答案:

答案 0 :(得分:3)

运行此错误时是否收到错误消息?如果是,我们需要查看错误和您的查询。此外,由于您已经定义了“Else'Y'”,因此您无需在case语句中添加任何逻辑来标识“Y”。

示例:

CASE 
      WHEN SD.CType = N'ALT' AND ES.SERVICE = N'Alerts' THEN 'N'
      WHEN SD.CType <> 'BPY' AND CQI.PTYPE = 'BP' THEN 'N'
      WHEN SD.CType = 'BPY' AND NA.BILL = 'Y' THEN 'N'    
      WHEN SD.CType = 'LEN' AND CC.PTYPE = 'CC' THEN 'N'
      ELSE 'Y'
   END    
      AS Keep