#sql #sql-server-2008
#sql #sql-server-2008
Вопрос:
col1
a
b
a
b
a
b
Пытаюсь получить вывод типа ba, ba, ba
Комментарии:
1. Откуда вы знаете, что col1 находится в таком порядке? Есть ли еще один столбец, который указывает, что это порядок? Что, если бы это было
c, a, a, c, d, c
так? Должен ли результат бытьac ,ca, cd
или что-то еще? Почему? Пожалуйста, покажите более одного простого примера и / или опишите правила.2. Таблицы SQL представляют собой неупорядоченные наборы. Без столбца, задающего порядок, ваш вопрос не имеет смысла. Кроме того, почему вы используете неподдерживаемое программное обеспечение?
Ответ №1:
Несколько шагов приведут вас к правильному результату:
- Скопируйте данные во временную таблицу
- Добавьте столбец идентификатора во временную таблицу
- Присоедините временную таблицу к самой себе, используя нечетные четные строки
Попробуйте этот код:
create table xtmp(col1 char)
insert xtmp values ('a'),('b'),('a'),('b'),('a'),('b'),('a'),('b')
select * into #tmp from xtmp
alter table #tmp add id int identity(1,1) not null
select evenrow.col1 oddrow.col1 col from
(select * from #tmp where id%2=0) evenrow
join
(select * from #tmp where id%2=1) oddrow
on evenrow.id = oddrow.id 1
Вывод
col
ba
ba
ba
ba