如何检查一个ID是否有多个不同的行?在下表VBELN
中,15233有两个VB_TYPE
。我需要检查VBELN
是否具有'p'和'R'以及condition1。 VBELN
25344只有R,所以我的else逻辑将有-if(VBELN
不包含p),那么condition2
+-------+---------+
| VBELN | VB_TYPE |
+-------+---------+
| 15233 | p |
+-------+---------+
| 15233 | R |
+-------+---------+
| 25344 | R |
+-------+---------+
| 26455 | p |
+-------+---------+
| 26455 | R |
+-------+---------+
我尝试了下面的case语句,但是我无法思考这种逻辑。
SQL:
CASE WHEN (Count(VBELN) OVER (PARTITION BY VBELN))=2 THEN CONDITION 1
ELSE CONDITION 2
END
有比count()更好的逻辑吗?
答案 0 :(得分:1)
如果类型不重复,您的代码就可以了。
(CASE WHEN (Count(VBELN) OVER (PARTITION BY VBELN)) = 2
THEN CONDITION 1
ELSE CONDITION 2
END)
如果您有两种类型,那么这更接近您想要的类型:
(CASE WHEN MIN(VB_TYPE) OVER (PARTITION BY VBELN) <> MAX(VB_TYPE) OVER (PARTITION BY VBELN)
THEN CONDITION 1
ELSE CONDITION 2
END)
如果还有其他类型,那么逻辑可以完成,但要复杂一些。