SQL вопрос У меня есть таблица, показанная ниже, требуется вывод типа ba, ba, ba

#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