В настоящее время у меня есть фрагмент кода, который поворачивает таблицу, в которой данные строки вставляются динамически. Код показан ниже:Извлечение данных из таблицы в SQL Server
CREATE TABLE Table1
([empname] varchar(6), [empqual] varchar(10), [emprank] int, [empexp] int)
INSERT INTO Table1
([empname], [empqual], [emprank], [empexp])
VALUES
('Joyce', 'UNIVERSITY', 1, 11),
('Angela', 'MASTERS', 2, 10),
('Lily', 'MASTERS', 3, 9),
('Sasha', 'UNIVERSITY', 3, 9),
('Harry', 'UNIVERSITY', 3, 9)
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SET @cols = STUFF((SELECT distinct ',' + 'Column' + CONVERT(VARCHAR,Row_Number() OVER (Order By emprank))
FROM Table1 c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SET @query = '
SELECT *
FROM
(
SELECT ''Column'' + CONVERT(VARCHAR,Row_Number() OVER (Order By emprank)) AS Columns,
CONVERT(VARCHAR,empname) as e
FROM Table1
) p
PIVOT
(
MAX (e)
FOR Columns IN
(
' + @cols + ')
) as pvt
UNION
SELECT *
FROM
(
SELECT ''Column'' + CONVERT(VARCHAR,Row_Number() OVER (Order By emprank)) AS Columns,
CONVERT(VARCHAR,empqual) as e
FROM Table1
) p
PIVOT
(
MAX (e)
FOR Columns IN
(
' + @cols + ')
) as pvt
UNION
SELECT *
FROM
(
SELECT ''Column'' + CONVERT(VARCHAR,Row_Number() OVER (Order By emprank)) AS Columns,
CONVERT(VARCHAR,emprank) as e
FROM Table1
) p
PIVOT
(
MAX (e)
FOR Columns IN
(
' + @cols + ')
) as pvt
UNION
SELECT *
FROM
(
SELECT ''Column'' + CONVERT(VARCHAR,Row_Number() OVER (Order By emprank)) AS Columns,
CONVERT(VARCHAR,empexp) as e,
FROM Table1
) p
PIVOT
(
MAX (e)
FOR Columns IN
(
' + @cols + ')
) as pvt
'
EXECUTE (@query)
Результат выше кода, как показано ниже:
Column1 Column2 Column3 Column4 Column5
1 2 3 3 3
11 10 9 9 9
Joyce Angela Lily Sasha Harry
UNIVERSITY MASTERS MASTERS UNIVERSITY UNIVERSITY
Теперь мое приложение требует, чтобы отобразить каждый из столбцов в этой таблице отдельно, т.е. каждый столбцов , а не строки этой таблицы, необходимо экспортировать из этой таблицы и передать, возможно, во временную таблицу, из которой она может быть легко отображена.
Мне хорошо известно, что реляционные БД сконструированы таким образом, чтобы рассматривать строки, а не столбцы, как отдельные объекты. Тем не менее, меня ограничивает приложение, в котором я работаю, для которого требуется код, который извлекает данные в этой таблице по столбцу, чтобы они могли отображаться отдельно.
Как бы я это сделал?
так что вы поворачиваете данные из строк в столбцы, и теперь вы хотите, что раньше было в строке, но возвращались в виде столбца? Почему именно вы поворачиваете данные вместо того, чтобы просто возвращать строку из исходных данных? – Tanner
Мне нужно, чтобы мои данные отображались в столбцах, таким образом, перенос из по-разному в столбцы. Поворот данных дает мне необходимый формат. – Pastafarian
... Я думаю, что вы серьезно недопонимаете концепцию столбцов SQL, а не отображаете столбцы. – anaximander