自加入排名查询(Self join in rank query)

编程入门 行业动态 更新时间:2024-10-26 10:37:54
自加入排名查询(Self join in rank query)

我想在以下查询中执行自加入:

select RANK() OVER (PARTITION BY CARD_ID, BE_BUSINESS_DATE ORDER BY CARD_TXN_SEQ_NUMBER) as Trip_Leg_Id from [dbo].[Src_Nol_Txns] s1 inner join

所以,我加入目前的记录与等级-1的记录如何实现呢?

I want to perform self join on the following query:

select RANK() OVER (PARTITION BY CARD_ID, BE_BUSINESS_DATE ORDER BY CARD_TXN_SEQ_NUMBER) as Trip_Leg_Id from [dbo].[Src_Nol_Txns] s1 inner join

so that, I join the current record with the record of rank -1 how to achieve that?

最满意答案

with cte as ( SELECT * , LAG(CARD_TXN_SEQ_NUMBER, 1,0) OVER (PARTITION BY CARD_ID, BE_BUSINESS_DATE ORDER BY CARD_TXN_SEQ_NUMBER) AS PreviousSEQ FROM table ); select cte1.*, cte2.* from cte as cte1 join cte as cte2 on cte2.CARD_ID = cte1.CARD_ID and cte2.BE_BUSINESS_DATE = cte1.BE_BUSINESS_DATE and cte2.CARD_TXN_SEQ_NUMBER = cte1.PreviousSEQ and cte1.PreviousSEQ <> cte1.CARD_TXN_SEQ_NUMBER;

我认为最后一个将处理重复

with cte as ( SELECT * , LAG(CARD_TXN_SEQ_NUMBER, 1,0) OVER (PARTITION BY CARD_ID, BE_BUSINESS_DATE ORDER BY CARD_TXN_SEQ_NUMBER) AS PreviousSEQ FROM table ); select cte1.*, cte2.* from cte as cte1 join cte as cte2 on cte2.CARD_ID = cte1.CARD_ID and cte2.BE_BUSINESS_DATE = cte1.BE_BUSINESS_DATE and cte2.CARD_TXN_SEQ_NUMBER = cte1.PreviousSEQ and cte1.PreviousSEQ <> cte1.CARD_TXN_SEQ_NUMBER;

I think the last and will deal with duplicates

更多推荐

本文发布于:2023-08-07 14:55:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1464715.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:join   rank   query

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!