2013-03-28 21 views
-3

我有一個複雜的查詢來填充數據,並且在我不得不加入表中的數據以獲得正確的結果之後。在不聲明表的情況下在同一個表上連接列

如何消除連接,使我不必定義表兩次。在上面的查詢我要decalre @tbl臨時表現在

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使用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 

感謝

回答

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; 
+0

其中SEQNUM = 1將給予最不日期,我想要最大日期 –

+0

@PradyutBhattacharya。 。 。 'order by'有一個'desc'修飾符,所以最大值的值是「1」。 –

相關問題