我有一个场景,其中ID具有三个标志。例如
ID flag1 flag2 flag3
1 0 1 0
2 1 0 0
1 1 0 0
1 0 0 1
2 0 1 0
3 0 1 0
4 1 0 0
现在我只希望记录具有flag2 = 1。即ID = 3具有flag2 = 1,其中ID = 1和2具有flag1和flag3 = 1以及flag2 = 1。我不希望ID = 1和2。我不能使ID唯一或主要。我尝试了用when语句的情况,但是却以某种方式缺少基本逻辑。我们可以使用CTE做到这一点,但我想在三种不同的情况下重复此操作(相同的逻辑,我只想对ID = 4重复,其中仅Flag1 = 1)。
您可以使用group by
和获取具有此条件的ID having
:
select id
from table t
group by id
having min(flag2) = max(flag2) and min(flag2) = 1;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句