Вопрос
Моя таблица имеет следующие столбцы:
A | B | C | D | E | F
Я хочу отобразить это следующим образом:
MyColumn | MyColumn2
A | B
C | D
E | F
Как вы можете видеть, я хочу отображать столбцы в виде пар с собственным именем столбца.Пары — это столбцы A и B, столбцы C и D и столбцы C и D.
Решение
select A as [Col 1], B as [Col 2] from table
union all
select C,D from table
union all
select E,F from table
Другие советы
Если я правильно вас понимаю, вы можете сделать это с помощью союза:
SELECT A as MyColumn, B as MyColumn2
UNION
SELECT C as MyColumn, D as MyColumn2
UNION
SELECT E as MyColumn, F as MyColumn2
Если ваши типы данных для соответствующих столбцов не совпадают, вам необходимо сначала преобразовать тип данных, например:
SELECT CONVERT(VARCHAR(10), A) as MyColumn, CONVERT(VARCHAR(10), B) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), C) as MyColumn, CONVERT(VARCHAR(10), D) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), E) as MyColumn, CONVERT(VARCHAR(10), F) as MyColumn2
Это не будет масштабироваться до миллиарда столбцов, но...
Select A as MyColumn, B as MyColumn2 from Table
UNION
Select C as MyColumn, D as MyColumn2 from Table
UNION
Select E as MyColumn, F as MyColumn2 from Table
Однако этот запрос удалит дубликаты.Допустим, в таблице есть одна запись.
Привет | Мир | Привет | Мир | Привет | Мир
Мой выбор вернется только
Привет | Мир
Самбо вернет всех троих...
В Sql Server 2005 оператор Unpivot может решить вашу проблему.Unpivot преобразует столбцы в строки в sql server 2005.
Надеюсь, поможет