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

Откуда: Пиндырдышханда
Сообщений: 948
declare @t as table (a varchar(10))
insert into @t
Select *
From(
Select 'negr' [a]
union ALL
Select 'китаяц'
union ALL
Select 'араб'
union ALL
Select 'еврей'
)D1

Select *
From @t[t1] 
, @t[t2] where exists 
(

)

моск сломаю.
что в экзыстс писать, чтобы выводилось так:
автор

негр - китаяц
китаяц - араб
араб - еврей
еврей - негр

Чувствую незасну
9 июн 09, 20:00    [7283073]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
без ключа таблицы никак. а по вашему варианту совершенно непонятно, как сортировать записи.

для спящего время бодрствования равносильно сну
9 июн 09, 20:02    [7283080]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
А как эта ф-ция называется, которая полям порядковый номер задаёт?
9 июн 09, 20:07    [7283091]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
Алексей2003
без ключа таблицы никак. а по вашему варианту совершенно непонятно, как сортировать записи.

для спящего время бодрствования равносильно сну


почиму непонятно?
в правом поле только 1 негр, китаяц и пр., в левом тоже
9 июн 09, 20:09    [7283095]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
*в правом столбце
9 июн 09, 20:11    [7283101]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
Select ROW_NUMBER() OVER (order by a), a
From @t[t1]
ну как будто бы PK
9 июн 09, 20:16    [7283108]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Erik_Kartmann,

в таблице нет никакого порядка. Всё свалено в кучу.
Поэтому непонятно, почему Вы связали негра именно с китайцем?
По какому-такому праву?

А если бы было ещё поле с уникальными номерами, то появилась бы какая-нибудь логика...
9 июн 09, 20:16    [7283109]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
declare @t as table (a varchar(10))
insert into @t
Select *
From(
Select 'negr' [a]
union ALL
Select 'китаяц'
union ALL
Select 'араб'
union ALL
Select 'еврей'
)D1;

WITH CTE(N,a) AS(SELECT ROW_NUMBER()OVER(ORDER BY a),a FROM @t)
SELECT t.a, ISNULL(tt.a,(SELECT a FROM CTE WHERE N=1))aa
FROM CTE t LEFT JOIN CTE tt ON t.N=tt.N-1
ORDER BY t.N;
9 июн 09, 20:23    [7283123]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
ну если бы поля были цифрами
1
2
3
4
, то мне бы хотелось, чтоб запрос выдал
автор

1 2
2 3
3 4
4 1
9 июн 09, 20:28    [7283131]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
то, что надо, iap, спасибо!!!
9 июн 09, 20:29    [7283134]     Ответить | Цитировать Сообщить модератору
 Re: змейкой через декартово  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Может, лучше так:
declare @t as table (a varchar(10))
insert into @t
Select *
From(
Select 'negr' [a]
union ALL
Select 'китаяц'
union ALL
Select 'араб'
union ALL
Select 'еврей'
)D1;

WITH CTE(N,C,a) AS(SELECT ROW_NUMBER()OVER(ORDER BY a), COUNT(*)OVER(),a FROM @t)
SELECT t.a, tt.a aa
FROM CTE t JOIN CTE tt ON t.N<t.C AND t.N=tt.N-1 OR t.N=t.C AND tt.N=1
ORDER BY t.N;
9 июн 09, 20:30    [7283136]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить