2017-08-28 99 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