2016-12-05 25 views
-2

我的數據如下所示:相同的PolicyNumber可以有不同的ClassCode。因此,如何消除含有PolicyNumberPACA1000101-00如果選擇去爲NOT IN如何通過不選擇子值,使所有父值從結果集中消失

所以至少一個ClassCode所有行,如果我說我WHERE ClassCode <> 01183希望所有這些記錄不會顯示在結果集中起來。

enter image description here

+0

雙重否定是令人不安的。所以你想要所有的記錄類碼是01183? (示例數據w /預期結果!) – xQbert

+0

如果'PolicyNumber'具有ClassCode'01183',我希望'PolicyNumber'可以擁有''Policy'''和任何其他'ClassCodes'(它是'69183'和'01183')不見了 – Oleg

+0

換句話說,如果一個policyNumber只有一個類代碼01183,那麼你想從結果中排除該policyNumber。這似乎是使用不存在或不存在的好時機。 (在更大的數據集上不存在更快) – xQbert

回答

1

使用不存在與相關子查詢?

Select * 
from table T1 
where not exists (Select 1 
        from table T2 
        where T1.PolicyNumber = T2.PolicyNumber 
        and classCode = 01183) 

另一種方式來做到這一點,如果你要加入到第二個表,不同的價值觀和你從該表需要的值....

SELECT T1.*, T2.* 
FROM table T1 
LEFT JOIN (Select * 
      from table T2 
      classCode = 01183) 
    on T1.PolicyNumber = T2.PolicyNumber 
WHERE T2.PolicyNumber is null 

這是說加入表本身,但只包括右邊有類別代碼爲01183的記錄。然後,where子句說排除所有保險號碼,其中至少有一次出現類別代碼01183.

+0

我剛剛嘗試了你的建議,但它顯示了我'PolicyNumber',01183'ClassCode'只有 – Oleg

+0

將'<>'改爲=如上。 – xQbert

+0

哦,哦,我很抱歉。你的答案是正確的我只是錯過了= = – Oleg

相關問題