[英]how i can set null values in left join in presto with the max values from the right joined table
我需要設置 null 值導致左連接與組中匹配 max(column_value) 的記錄值,所以我有兩個表:
第一個是:
discount_id | sequence | groupid | ruleid | tbl_dt
-------------+----------+---------+--------+----------
1111 | 1 | 141 | 1175 | 20190924
1111 | 5 | 107 | 1204 | 20190924
1111 | 4 | 132 | 1199 | 20190924
1111 | 6 | 150 | 1887 | 20190924
第二個是:
subsid | discount_id
---------+-------------
3087048 | 1111
3087047 | 1111
3087050 | 1111
3087045 | 1111
3087046 | 1111
3087044 | 1111
3087049 | 1111
3087043 | 1111
我試圖做的是將第二個原始表與第一個原始表結合起來,所以我的 output 是:
subsid | discount_id | sequence | groupid | ruleid
---------+-------------+----------+---------+--------
3087043 | 1111 | 5 | 107 | 1204
3087043 | 1111 | 6 | 150 | 1887
3087043 | 1111 | 4 | 132 | 1199
3087043 | 1111 | 1 | 141 | 1175
3087044 | 1111 | NULL | NULL | NULL
3087045 | 1111 | NULL | NULL | NULL
3087046 | 1111 | NULL | NULL | NULL
3087047 | 1111 | NULL | NULL | NULL
3087048 | 1111 | NULL | NULL | NULL
3087049 | 1111 | NULL | NULL | NULL
3087050 | 1111 | NULL | NULL | NULL
我用來生成上表的代碼是:
insert into work.disc_plan select SubsID , MSISDN , EppAcc, User_Name ,
Bill_Cycle, Tariff , Pack ,Discount_Qual_ID ,a.Discount_ID , Qualification_Type,Discount_Desc,Sequence,GroupID,RuleID,20190924
from ((select *, row_number() over (partition by Discount_ID order by subsid ) as seqnum from work.subs_disc where tbl_dt=20190924 order by Discount_ID) a
left join (select *, row_number() over (partition by Discount_ID order by sequence ) as seqnum from work.rules where tbl_dt=20190924 ) b
on a.Discount_ID=b.Discount_ID and a.seqnum=b.seqnum ) ;
我現在需要填充 NULL 值,這些值由左連接導致的最大記錄值(序列)
所以我的輸出輸出應該是這樣的:
subsid | discount_id | sequence | groupid | ruleid
---------+-------------+----------+---------+--------
3087043 | 1111 | 5 | 107 | 1204
3087043 | 1111 | 6 | 150 | 1887
3087043 | 1111 | 4 | 132 | 1199
3087043 | 1111 | 1 | 141 | 1175
3087044 | 1111 | 6 | 150 | 1887
3087045 | 1111 | 6 | 150 | 1887
3087046 | 1111 | 6 | 150 | 1887
3087047 | 1111 | 6 | 150 | 1887
3087048 | 1111 | 6 | 150 | 1887
3087049 | 1111 | 6 | 150 | 1887
3087050 | 1111 | 6 | 150 | 1887
知道怎么做嗎?
您可以在外部 select 部分中使用類似 coalesce(Sequence, MAX(a.Sequence)) 的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.