select t3.tn, t1.parent_trans_id
from T1
INNER JOIN
T2
ON T1.SL_ORDER_ID = t2.sl_order_id
inner join
t3
on t2.subscriber_line_id = t3.subscriber_line_id
where
t3.TN in ('9727740700', '9897860312')
这是我用来带来数据
的查询TN parent_trans_id
9897860312 166974063
9897860312 168516881
9897860312 168486626
9727740700 172254571
9727740700 173345705
9727740700 173345235
我只需要选择最后2个最大的parent_trans_id我尝试了一些sub_queries但是没有用。 以下是我需要的数据集。
TN parent_trans_id
9897860312 168516881
9897860312 168486626
9727740700 173345705
9727740700 173345235
答案 0 :(得分:2)
您可以使用分析函数row_number
在每个组中分配行号,并为每个tn获取前两行。
select *
from (
select t3.tn,
t1.parent_trans_id,
row_number() over (
partition by t3.tn order by t1.parent_trans_id desc nulls last
) rn
from T1
inner join T2 on T1.SL_ORDER_ID = t2.sl_order_id
inner join t3 on t2.subscriber_line_id = t3.subscriber_line_id
where t3.TN in ('9727740700', '9897860312')
)
where rn <= 2;
答案 1 :(得分:1)
您可以使用row_number()
:
with t as (
<your query here>
)
select t.*
from (select t.*, row_number() over (partition by tn order by ?? desc) as seqnum
from t
) t
where seqnum <= 2;
??
用于指定“最后”是什么的列。