SQL преобразовать столбец в строку - PullRequest
2 голосов
/ 18 февраля 2009

В моей таблице есть следующие столбцы:

A  |  B  |  C  |  D  |  E  |  F  

Я хочу отобразить это следующим образом:

MyColumn  |  MyColumn2
  A       |    B
  C       |    D
  E       |    F

Как видите, я хочу отображать столбцы в виде пар с произвольным именем столбца. Парами являются столбцы A и B, столбцы C и D и столбцы C и D.

Ответы [ 4 ]

2 голосов
/ 18 февраля 2009
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
0 голосов
/ 25 апреля 2009

В Sql Server 2005 оператор Unpivot может решить вашу проблему. Unpivot преобразует столбцы в строки в SQL Server 2005 .

Надеюсь, это поможет

0 голосов
/ 18 февраля 2009

Если я вас правильно понимаю, вы можете сделать это с помощью союза:

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
0 голосов
/ 18 февраля 2009

Это не масштабируется до миллиарда столбцов, но ...

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

Этот запрос удалит дубликаты. Допустим, в таблице есть одна запись

Привет | Мир | Привет | Мир | Привет | Мир

Мой выбор вернет только

Привет | Мир

Самбо вернет все три ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...