2013-04-10 79 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