簡體   English   中英

帶PARTITION的SQL- Case語句

[英]SQL- Case statement with PARTITION by

如何檢查一個ID是否有多個不同的行? 在下表中, VBELN 15233具有兩個VB_TYPE 我需要檢查VBELN是否具有'p'和'R'然后condition1。 VBELN只有R,所以我的else邏輯將有VBELNVBELN不包含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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM