Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 mssql хитрая сортировка  [new]
maxim.v84
Member

Откуда:
Сообщений: 3
Нужно, это:
col1 | col2
------------
A | B
A | D
A | C
A | A
B | C
B | B
B | D
C | D
C | B
C | D


отсортировать к виду:
col1 | col2
------------
A | A
A | B
A | C
A | D
B | B
B | C
B | D
C | C
C | B
C | D 


Пробовал на
BY CASE WHEN t.col1=t.col2 THEN 0 ELSE 1 END
, но это естественно 0 выводят вверх:

col1 | col2
------------
A | A
B | B
C | C


Как быть?
14 сен 15, 16:47    [18147608]     Ответить | Цитировать Сообщить модератору
 Re: mssql хитрая сортировка  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
maxim.v84, order by col1, col2?
14 сен 15, 16:51    [18147635]     Ответить | Цитировать Сообщить модератору
 Re: mssql хитрая сортировка  [new]
o-o
Guest
declare @t table (col1 char, col2 char);
insert into @t values
('A' , 'B'),
('A' , 'D'),
('A' , 'C'),
('A' , 'A'),
('B' , 'C'),
('B' , 'B'),
('B' , 'D'),
('C' , 'D'),
('C' , 'B'),
('C' , 'D')

select *
from @t
order by col1, ROW_NUMBER() over (partition by col1 order by col2)
14 сен 15, 16:56    [18147653]     Ответить | Цитировать Сообщить модератору
 Re: mssql хитрая сортировка  [new]
order by,
Guest
maxim.v84,

order by col1, CASE WHEN col1=col2 THEN 0 ELSE 1 END, col2
14 сен 15, 16:58    [18147668]     Ответить | Цитировать Сообщить модератору
 Re: mssql хитрая сортировка  [new]
o-o
Guest
Minamoto
maxim.v84, order by col1, col2?

да уж, у меня разве что приз за
"как бы простое сделать посложнее"
----
но откуда вообще в результате строка C | C?
14 сен 15, 17:00    [18147679]     Ответить | Цитировать Сообщить модератору
 Re: mssql хитрая сортировка  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
maxim.v84,

case when col1 = col2 then 0 else ROW_NUMBER() over (partition by col1 order by col2) end
14 сен 15, 17:00    [18147683]     Ответить | Цитировать Сообщить модератору
 Re: mssql хитрая сортировка  [new]
maxim.v84
Member

Откуда:
Сообщений: 3
Спасибо
14 сен 15, 17:02    [18147696]     Ответить | Цитировать Сообщить модератору
 Re: mssql хитрая сортировка  [new]
maxim.v84
Member

Откуда:
Сообщений: 3
order by col1, CASE WHEN col1=col2 THEN 0 ELSE 1 END, col2 
правильно.
14 сен 15, 17:06    [18147709]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить