我这里的情况很罕见。
我有以下数据
Column A Column B
-------- --------
9999 A
9999 A
9999 V
9999 A
9999 N
7777 A
7777 A
7777 A
7777 A
7777 N
预期结果:由于存在带有字母V的9999行,因此只会显示7777行。
我需要制定以下规则。如果列B为'N'并且不同于V(<>'V'),则显示列A。 我遇到了麻烦,因为我在A列中有几行具有相同的值,并且如果我在任何行中都不存在值'N'和'V',则只能在A列中显示该值。
我希望我能很好地解释这一点。 有人可以帮忙吗?
非常感谢!
答案 0 :(得分:3)
根据提供的详细信息,这就是我想要的:
SELECT DISTINCT T1.columnA
FROM myTable T1
WHERE T1.columnB='N'
AND NOT EXISTS (SELECT 1 FROM myTable T2 WHERE T2.columnB='V' AND T1.columnA=T2.columnA)
答案 1 :(得分:2)
您可以使用聚合:
select columnA
from t
group by columnA
having sum(case when columnB = 'N' then 1 else 0 end) > 0 and
sum(case when columnB = 'V' then 1 else 0 end) = 0 ;
编辑:
您似乎想要:
select t.*
from t
where exists (select 1
from t t2
where t2.id = t.id and t2.item = 'N'
) and
not exists (select 1
from t t2
where t2.id = t.id and t2.item = 'V'
);