在不声明表的情况下在同一个表上连接列

时间:2013-03-28 19:14:56

标签: sql sql-server tsql

我有一个复杂的查询来填充数据和之后 我必须加入表格中的数据才能得到正确的结果。

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

连接查询是 -

 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

由于

1 个答案:

答案 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;