SQL NOT IN()语句不起作用

时间:2015-08-06 18:18:26

标签: sql notin

我正在处理医疗数据并列出了索赔号。这些索赔号码具有与每个索赔相关联的多个收入代码。

我试图消除任何REVENUE_CD为450的声明。

然而,结果仍包括具有该收入代码的索赔。它似乎是返回450与其他代码一起的声明。我需要它来查看所有的收入代码,并消除多个代码中包含450的索赔。

SELECT claim_num
FROM claims c
WHERE revenue_cd NOT IN ('0450')

结果:

ICN_NUM REVENUE_CD
1   1335    0352
2   1335    0300
3   1335    0252
4   1335    0306
5   1335    0324
6   1335    0272
7   1335    0762
8   1335    0305
9   1335    0450
10  1335    0637

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这不是正确的方法。

一种方法是

SELECT claim_num
FROM   claims c
GROUP  BY claim_num
HAVING COUNT(CASE
               WHEN revenue_cd = '0450' THEN 0
               ELSE 1
             END) = 0 

或另一个

SELECT claim_num
FROM   claims
EXCEPT 
SELECT claim_num
FROM   claims
WHERE revenue_cd = '0450'

或者您可以将相关子查询与NOT INNOT EXISTS同时使用

SELECT c1.claim_num
FROM   claims c1
WHERE  c1.claim_num NOT IN (SELECT c2.claim_num
                            FROM   claims c2
                            WHERE  c2.revenue_cd = '0450'
                                   AND c2.claim_num IS NOT NULL)