Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Мастера SQL - нужна помощь!  [new]
Колючка
Member

Откуда: Днепропетровск
Сообщений: 51
Помогите из данной выборки

select 1 as c
union all
select 1 as c
union all
select 2 as c

получить выходные данные в виде:
1 1
1 2
2 1


Заранее огромное спасибо!!!
29 май 09, 20:15    [7246499]     Ответить | Цитировать Сообщить модератору
 Re: Мастера SQL - нужна помощь!  [new]
Колючка
Member

Откуда: Днепропетровск
Сообщений: 51
Ой, нашла уже!
select row_number() over (order by c), c
from (
select 1 as c
union all
select 1 as c
union all
select 2 as c) z
29 май 09, 20:19    [7246517]     Ответить | Цитировать Сообщить модератору
 Re: Мастера SQL - нужна помощь!  [new]
урка1
Member

Откуда: Москва, Кремль
Сообщений: 761
Одеситка, плывущая к знаниям -
вообще-то приведенный чудо-скрипт дает совершенно ИНОЙ результат

1 1
2 1
3 2

всех зачистим и замочим, а кто спрячется - персонального доктора вышлем
29 май 09, 20:28    [7246547]     Ответить | Цитировать Сообщить модератору
 Re: Мастера SQL - нужна помощь!  [new]
Колючка
Member

Откуда: Днепропетровск
Сообщений: 51
Да, вы правы. :(
29 май 09, 20:31    [7246556]     Ответить | Цитировать Сообщить модератору
 Re: Мастера SQL - нужна помощь!  [new]
Колючка
Member

Откуда: Днепропетровск
Сообщений: 51
select row_number() over (partition by c order by c ), c
from (
select 1 as c
union all
select 1 as c
union all
select 2 as c) z
29 май 09, 20:45    [7246594]     Ответить | Цитировать Сообщить модератору
 Re: Мастера SQL - нужна помощь!  [new]
урка1
Member

Откуда: Москва, Кремль
Сообщений: 761
Да прикольный пост для пятницы вечером

Особенно когда он из Одессы-мамы, где наверное уже купаются

вы вообще представляете себе что такое СЕКЦИОНИРОВАНИЕ и из какой темы вообще функция partition?

всех зачистим и замочим, а кто спрячется - персонального доктора вышлем
29 май 09, 20:48    [7246615]     Ответить | Цитировать Сообщить модератору
 Re: Мастера SQL - нужна помощь!  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3197
Почти так, да:
select row_number() over (partition by c order by (select null)), c
from (
	select 1 as c
	union all
	select 1 as c
	union all
	select 2 as c
) z;

урка1,

Толсто.
29 май 09, 20:54    [7246631]     Ответить | Цитировать Сообщить модератору
 Re: Мастера SQL - нужна помощь!  [new]
урка1
Member

Откуда: Москва, Кремль
Сообщений: 761
Да, partition order by NULL - смешно
Только результат савсэм ненадежный таким путем получается

А вдруг дэвушка совершит очепятку и чуть-чуть изменит данные
select row_number() over (partition by c order by (select null)), c
from (
	select 10 as c
	union all
	select 15 as c
	union all
	select 20 as c
) z;
дает
1 10
1 15
1 20


Думаю, горазда надежнее получить требуемое так

with Z as 
( 
	select 1 as c
	union all
	select 1 as c
	union all
	select 2 as c
)
select case
when row_number() over (order by c)=2 then 2
else 1
end , c 
from z
это независимо от данных даст первый столбец вот так
1
2
1

всех зачистим и замочим, а кто спрячется - персонального доктора вышлем
29 май 09, 22:21    [7246873]     Ответить | Цитировать Сообщить модератору
 Re: Мастера SQL - нужна помощь!  [new]
Колючка
Member

Откуда: Днепропетровск
Сообщений: 51
Девушка-одесситка, между прочим, раньше жила в Днепропетровске и оптимизировала сложные запросы в банке, а сейчас уже года два занимается менее сложными делами и немножечко подзабыла как всё это делается. ;)
Спасибо за ответы :)
30 май 09, 12:13    [7247423]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить