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

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

какуюнибудь быструю и красивую(компактную) реализацию подскажите плиз.

------------------------------------------------------------------------------
— Куда мне отсюда идти?
— А куда ты хочешь попасть?
— А мне все равно, только бы попасть куда-нибудь.
— Тогда все равно куда идти. Куда-нибудь ты обязательно попадешь.
мониторинг позиций сайтов
19 июн 12, 23:00    [12741895]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать попроще и побыстрее  [new]
ChA
Member

Откуда: Москва
Сообщений: 11317
CROSS JOIN или UNION, ORDER BY PK таблицы, номер
20 июн 12, 01:03    [12742481]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать попроще и побыстрее  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
sp_eedo
какуюнибудь быструю и красивую(компактную) реализацию подскажите плиз.
Обычный джойн, что тут подсказывать?
20 июн 12, 09:58    [12743322]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать попроще и побыстрее  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
SELECT T.*
FROM (SELECT N=ROW_NUMBER()OVER(ORDER BY(SELECT 0)),* FROM [TableName])T
CROSS JOIN (SELECT -1 UNION ALL SELECT 1)U(X)
ORDER BY T.N;
или
SELECT T.*
FROM (SELECT N=ROW_NUMBER()OVER(ORDER BY(SELECT 0)),* FROM [TableName])T
CROSS JOIN (VALUES(-1),(1))U(X)
ORDER BY T.N;
20 июн 12, 10:10    [12743448]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать попроще и побыстрее  [new]
sp_eedo
Member

Откуда: ьщы
Сообщений: 507
я пока что вот так сделал =) сейчас посмотрю предложенные варианты

SELECT
[ROW_ID]
,[URL]
,convert(nvarchar(50),ROW_NUMBER() OVER(ORDER BY ROW_ID DESC)) ORD
INTO #RES1
FROM [SIGHT]
where [USED]='Y'

select
'' [ROW_ID],'ххх' [URL],ORD+'b' ORD
INTO #RES2
from #RES1

update #RES1 set ORD =ORD+'a'

select * from
(
select * from #RES1
UNION ALL
select * from #RES2
)T1
order by ORD


drop table #RES1
drop table #RES2
20 июн 12, 10:31    [12743635]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать попроще и побыстрее  [new]
sp_eedo
Member

Откуда: ьщы
Сообщений: 507
iap
SELECT T.*
FROM (SELECT N=ROW_NUMBER()OVER(ORDER BY(SELECT 0)),* FROM [TableName])T
CROSS JOIN (SELECT -1 UNION ALL SELECT 1)U(X)
ORDER BY T.N;


iap победил
20 июн 12, 10:39    [12743710]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать попроще и побыстрее  [new]
Jaffar
Member

Откуда:
Сообщений: 633
Вот .

select t2.*, t.*
from tlex_TEMPTEST t with(nolock)
cross apply(select 1 TYP
			union all
			select 2 TYP) t2
order by t.t_ID asc, t2.TYP asc
20 июн 12, 12:16    [12744760]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить