SQL Server преобразует значения строк в столбцы - PullRequest
1 голос
/ 15 мая 2019

У меня есть таблица SQL, подобная этой

 Name1    Name2    Department1    Department2    Location1   Location2  
 ----------------------------------------------------------------------
 Jhon     Alex     IT             Marketing      London      Seattle
 Mark     Dan      Sales          R&D            Paris       Tokyo

Как я могу запросить эти результаты в этом формате:

 Name        Department      Location
 ---------------------------------------
 Jhon        IT              London
 Alex        Marketing       Seattle
 Mark        Sales           Paris
 Dan         R&D             Tokyo

Ответы [ 3 ]

5 голосов
/ 15 мая 2019

Использование cross apply

DEMO

select name,department,location
from t
cross apply
(
  values(name1,department1,location1),(name2,department2,location2)
)cc (name, department,location)

ВЫВОД:

name    department  location
Jhon    IT           London
Alex    Marketing    Seattle
Mark    Sales        Paris
Dan     R&D T        Tokyo
4 голосов
/ 15 мая 2019

Вы можете попытаться использовать оператор UNPIVOT SQL Server, но, честно говоря, простой объединенный запрос может работать даже лучше:

SELECT Name1 AS Name, Department1 AS Department, Location1 AS Location FROM yourTable
UNION ALL
SELECT Name2, Department2, Location2 FROM yourTable;

Что касается ожидаемого порядка, в исходном столбце идентификатора нет.таблица, которая указывает, к какой паре имен относится каждая записьТак что то, что я написал выше, может быть лучшим, что мы можем сделать здесь.

0 голосов
/ 15 мая 2019

Попробуйте:

DECLARE @TestDemo AS TABLE(Name1 VARCHAR(10),Name2 VARCHAR(10),Department1 VARCHAR(10),Department2 VARCHAR(10),Location1 VARCHAR(10),Location2 VARCHAR(10))

    INSERT INTO @TestDemo VALUES('Jhon','Alex','IT','Marketing','London','Seattle')
    INSERT INTO @TestDemo VALUES('Mark','Dan','Sales','R&D','Paris','Tokyo')

    SELECT Name1 'Name',Department1 'Department',Location1  'Location' FROM @TestDemo
    UNION ALL
    SELECT Name2 'Name',Department2 'Department',Location2  'Location' FROM @TestDemo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...