2013-03-28 3 views
-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 

сейчас в приведенном выше запросе я должен decalre @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 

Благодарности

ответ

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». –

Смежные вопросы