我想返回段之间具有不同值的ID:
| id | segment | quantity |
|-------|-------------|----------|
| 12345 | Control - A | 1 |
| 12345 | Control - B | 1 |
| 98765 | Control - A | 0 |
| 98765 | Control - B | 1 |
输出:
| id |
|-------|
| 98765 |
我曾经尝试过CASE逻辑,分区等,但是想知道最佳方法。
答案 0 :(得分:2)
在这种情况下,我发现使用EXISTS子句是最容易阅读的,但是使用自联接的其他答案也应该可以正常工作。
select distinct id
from t1 where exists
(select 1
from t1 t1_alias
WHERE t1.id = t1_alias.id and
t1.segment != t1_alias.segment and
t1.quantity != t1_alias.quantity)
;
答案 1 :(得分:1)
可能不是最佳方法,但您没有提到它,我会尝试这样的事情:
select
distinct t1.id
from
table t1 inner join
table t2 on t1.id = t2.id and t1.quantity != t2.quantity and t1.segment != t2.segment