我有一个复杂的查询来填充数据和之后 我必须加入表格中的数据才能得到正确的结果。
如何消除连接,这样我就不必两次定义表了。
连接查询是 -
select t1.acc_no, t1.group_id, t1.remdt from @tbl t1
inner join (
select group_id, MAX(row_num) as max_row from @tbl group by group_id) t2
on t1.group_id= t2.group_id and t1.row_num=t2.max_row
现在在上面的查询中我必须对@tbl临时表进行decalre。
如何获得相同的结果,以便我不必使用连接,也不必两次写相同的查询。
使用sql -
填充我的@tbl select ReminderDt as 'rem dt', m.Group_Id, m.AccountNumber,
row_number() over (partition by group_id order by reminderdt asc) as seqnum
from ACE_AccsLevelTran t join ACE_AccsLevelMaster m on t.MasterAccNumber=m.AccountNumber where m.AssignedUser=7
由于
答案 0 :(得分:2)
您可以使用窗口函数row_number()
:
select t.acc_no, t.group_id, t.remdt
from (select t.*, ROW_NUMBER() over (partition by group_id order by row_num desc) as seqnum
from @tbl t
) t
where seqnum = 1;