Sql server 不同字段的Case语句

Sql server 不同字段的Case语句,sql-server,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或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=N'ALT'和ES.SERVICE=N'Alerts'时,则为'N'
当SD.CType=N'ALT'和ES.SERVICE N'Alerts'时,则为'Y'
当SD.CType N'ALT'和ES.SERVICE N'Alerts'时,则为'Y'
当SD.CType='BPY'和CQI.PTYPE='BP'时,则为'Y'
当SD.CType'BPY'和CQI.PTYPE='BP'时,则为'N'
当SD.CType'BPY'和NA.BILL='Y'时,则为'Y'
当SD.CType='BPY'和NA.BILL='Y'时,则为'N'
当SD.CType='LEN'和CC.PTYPE'CC'时,则为'Y'
当SD.CType='LEN'和CC.PTYPE='CC'时,则为'N'
还有“Y”
结束
照常
基本上,这些都包括SD.CType值,然后它们与其他3个字段中的值组合在一起。我可以在VB中编写一个SELECT CASE语句来实现这一点,但我需要在SQL中运行它


谢谢你的建议,谢谢

运行此操作时是否出现错误?如果是,我们需要查看错误和您的查询。此外,由于您已经定义了“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
案例
当SD.CType=N'ALT'和ES.SERVICE=N'Alerts'时,则为'N'
当SD.CType'BPY'和CQI.PTYPE='BP'时,则为'N'
当SD.CType='BPY'和NA.BILL='Y'时,则为'N'
当SD.CType='LEN'和CC.PTYPE='CC'时,则为'N'
还有“Y”
结束
照常

您的手机出了什么问题?您可以嵌套您的CASE语句,但这看起来非常简单。谢谢,它似乎有效,但我想知道它是否有明显的低效之处,或者我是否应该尝试一些更容易阅读的其他语法。我只是不相信所有的案例都在这里面。谢谢你的编辑。现在它更有意义了:PMy鼠标比我的手指快:D