2017-08-28 105 views
1

这怎么写?不同领域的案例陈述

我需要检查几个字段的各种条件,以确定是否标记记录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

有什么问题你有什么?你可以嵌套你的CASE语句,但是这看起来很简单。 – JNevill

+0

感谢JNevil,它似乎工作,但我想知道是否有任何明显的低效率,或者如果我应该尝试一些更容易阅读的其他语法。我只是没有把握所有案例都在这个问题上。 –

回答

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 
+2

谢谢你的编辑,它现在更有意义:P – xQbert

+0

我的鼠标比我的手指快:D – NonProgrammer