2013-04-10 78 views
0

返回領域我試圖做到以下幾點:SQL - 只有包含滿足要求

分配一個Y/N標誌爲預先批准,其中包括那些與BI限制25/50和PD限制25和政策,所有政策沒有其他的報道。

所以這段代碼滿足第一條件:

SELECT DISTINCT 
     PolNum 
FROM Results_Vehicle 
WHERE (CovCode = 'BI' 
      AND CovLimit = '25/50' 
     ) 
     OR (CovCode = 'PD' 
      AND CovLimit = '25' 
      ) 

我無法弄清楚如何不包括有其他報道記錄。因此,基本上對於每個策略,他們可以擁有UMBI,COL,REN,BI,PD等的CovCodes。但是,如果對於該PolNum,他們只有BI或PD作爲CovCode和上面定義的CovLimit,則該標誌只應給出Y.

所以我也需要把它放在Y/N格式如下,顯然這只是滿足的要求第一部分:

SELECT CASE WHEN (CovCode = 'BI' 
        AND CovLimit = '25/50' 
       ) 
        OR (CovCode = 'PD' 
         AND CovLimit = '25' 
        ) THEN 'Y' 
      ELSE 'N' 
     END AS PriorApproval 
FROM Results_Vehicle 
+2

RDBMS + DDL請 – Sebas 2013-04-10 15:48:13

回答

0

如何下面這個查詢。聯盟查詢爲您提供了具有該類型覆蓋範圍的所有PolNum的組合列表,因此您可以執行not in爲您提供不在該列表中的所有保單號碼,然後您執行名單,這應該給你的PolNum只有期望的覆蓋面,沒有其他覆蓋面。

SELECT CASE WHEN 
(
(CovCode = 'BI' AND CovLimit = '25/50') 
OR 
(CovCode = 'PD' AND CovLimit = '25') 
and PolNum not in 
(
    select PolNum from Results_Vehicle as r1 where PolNum not in 
    (
    select PolNum from Results_Vehicle as r2 
    where CovCode = 'BI' and CovLimit = '25/50' 
    union 
    select PolNum from Results_Vehicle as r3 
    where CovCode = 'PD' AND CovLimit = '25' 
    ) 
) 
) THEN 'Y' 
ELSE 'N' 
END AS PriorApproval 

FROM Results_Vehicle