2013-06-13 4 views
0

У меня есть запрос, который возвращает набор результатов, как это:Сортировка и упорядочивание двумя колоннами

Proj | release | releaseDt 
1  | 2  | 1/2/2013 
1  | 1  | 4/5/2012 
2  | 1  | [null] 
3  | 1  | 22/2/2013 
1  | 3  | [null] 
3  | 2  | [null] 

Мне нужно разобраться в этом по releaseDt, но мне нужно, чтобы все записи для этого Proj вместе.

После сортировки, результат должен быть что-то вроде этого:

Proj | release | releaseDt 
1 | 2  | 1/2/2013 
1 | 1  | 4/5/2012 
1 | 3  | [null] 
3 | 1  | 22/2/2013 
3 | 2  | [null] 
2 | 1  | [null] 

Как я могу сделать это с помощью SQL Server?

+0

Вы должны использовать 'порядок by' на этой колонке. – NINCOMPOOP

+0

нет .. добавление порядка на выпуск dt будет упорядочивать весь набор результатов в зависимости от dt .. я хочу, чтобы соответствующие строки для этого proj собрались вместе. – user1916649

+0

Вы попробовали мой ответ? Он должен делать именно то, что вы хотите. –

ответ

1

Вы хотите отсортировать по самой ранней дате выпуска проекта, а затем по дате выпуска в рамках проекта.

Вы можете получить самую раннюю дату, используя функцию окна, а затем использовать его для сортировки:

select t.Proj, t.release, t.releaseDt 
from (select t.*, min(releasedt) over (partition by proj) as minrdt 
     from t 
    ) t 
order by t.minrdt, t.proj, t.releaseDt 
+0

Спасибо тонну ... у дал идеальный ... .. «partirion by» сделал работу ... – user1916649

3

Все, что вам нужно сделать, это своего рода ваш стол дважды: сначала Proj, затем releaseDt:

SELECT * 
FROM mytable 
ORDER BY 
    Proj ASC, 
    releaseDt DESC 
+0

i dont want orderby for proj .... так как он полностью зависит от того, какая дата выпуска последней. – user1916649

+0

@ user1916649 Извините, я вас не понимаю - не могли бы вы перефразировать свой вопрос? –

+0

Мне нужно сортировать результаты с последней версией release, сохраняя вместе все строки для proj. – user1916649

3

Попробуйте

ORDER BY proj ASC, releaseDt DESC 

Если сделать трюк!

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