-3

我有一个复杂的查询来填充数据,之后我必须加入表中的数据以获得正确的结果。

如何消除连接,这样我就不必定义表两次。

连接查询是 -

 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 临时表。

如何获得相同的结果,这样我就不必使用连接,也不必两次编写相同的查询。

我的@tbl 使用 sql 填充 -

  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

谢谢

4

1 回答 1

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;
于 2013-03-28T19:20:08.187 回答