我的表格如下:
EAN | Country | Status
1 | Germany | A
1 | France | B
1 | Spain | A
2 | Germany | A
2 | France | A
2 | Spain | A
我需要至少在一个国家/地区中状态为“A”的每个ID,但至少不在另一个国家/地区。
在此示例中,结果应包含ID 1,因为它在德国和西班牙的状态为“A”,但在法国则不包含。
答案 0 :(得分:1)
尝试自我加入:
select distinct main.EAN
from [table] main
join [table] sub
on main.EAN = sub.EAN and
main.Country <> sub.Country and
main.Status <> sub.Status
[table]
必须替换为您实际的表名。这应该会给你想要的结果。
答案 1 :(得分:0)
使用子选择,您可以执行以下操作:
select
EAN
from
(
select
EAN,
sum(case when Status = "A" then 1 else 0 end) statusA,
sum(case when Status <> "A" then 1 else 0 end) statusOther
from
statuses
group by
EAN
) summary
where
summary.statusA > 0 and
summary.statusOther > 0
查看示例here。