[英]SQL- Case statement with PARTITION by
如何檢查一個ID是否有多個不同的行? 在下表中, VBELN
15233具有兩個VB_TYPE
。 我需要檢查VBELN
是否具有'p'和'R'然后condition1。 VBELN
只有R,所以我的else邏輯將有VBELN
( VBELN
不包含p)然后condition2
+-------+---------+
| VBELN | VB_TYPE |
+-------+---------+
| 15233 | p |
+-------+---------+
| 15233 | R |
+-------+---------+
| 25344 | R |
+-------+---------+
| 26455 | p |
+-------+---------+
| 26455 | R |
+-------+---------+
我已經嘗試過以下案例陳述,但是我無法超越這種邏輯。
SQL:
CASE WHEN (Count(VBELN) OVER (PARTITION BY VBELN))=2 THEN CONDITION 1
ELSE CONDITION 2
END
有沒有比count()更好的邏輯?
如果不重復類型,則您的代碼很好。
(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)
如果還有其他類型,則邏輯可以完成,但要復雜一些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.