[英]Array Search in a CASE WHEN in SQL
我目前有兩張表的數據。 我根據某些調查結果按多個標准加入這兩個表格。
CASE WHEN a.trans_dt = b.trans_dt and b.trans_type = 'MASSTS' THEN b.trans_details
我的問題是有時可能有 2 個甚至三個 trans_Type,我嘗試使用 MAX
MAX(CASE WHEN a.trans_dt = b.trans_dt and b.trans_type = 'MASSTS'
THEN b.trans_details ELSE NULL END) AS trans_Dtls
但這並不總是奏效。
表 b 中有一個字段,它是一個序列號,我想要具有更大序列號的反式類型,因為這是當天發生的最后一個。
CASE WHEN a.trans_dt = b.trans_dt and b.trans_type = 'MASSTS'
THEN b.trans_Details(with greatest b.seq_num)
我不知道如何告訴它抓住最大的一個。 我不一定說最后,因為數據被攝取的方式最大的 seq_num 可能是第一行或最后一行或兩者之間的任何地方,因為它們在攝取到數據庫中時沒有任何順序。
您可以使用window
函數。
select a.blah.., b.blah...
from a
left join
(select b.* , row_number() over ( partition by trans_type, trans_dt order by trans_type, trans_dt, seq_num desc) as rn from b ) as b
ON b.rn=1 and a.trans_dt = b.trans_dt and b.trans_type = 'MASSTS' --This rn will give you data for maximum row from table b. Pls note to join on correct columns between a and b
說明 - 基於以下兩個參數,每個窗口行將被賦予 rownumber,如 1,2,3...
partition by trans_type, trans_dt
- 這將決定您的數據窗口。
order by trans_type, trans_dt, seq_num desc
- 這將對窗口內的數據進行排序。 因此,具有最大 seq 的 seq num 將被編號為 1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.