Вопрос

Моя таблица имеет следующие столбцы:

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.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top