Как переместить строки в столбцы? - PullRequest
3 голосов
/ 12 октября 2010

Моя база данных допускает пользовательские поля (UDF), и во время выбора я хочу объединить поля обычной таблицы с UDF в другой таблице. Вот пример.

Table Person

Id  FirstName   LastName
1    John        Smith
2    Jim         Adams

Table UDF
PersonId  FieldName FieldValue
2      Age           28
2      Status    Available

Result of query
Id  FirstName  LastName Age   Status
1   John      Smith     NULL  NULL
2   Jim   Adams     28    Avalable

Я использую SQL Server 2008 и хотел бы увидеть пример с использованием Pivot или UnPivot.

Спасибо

Ответы [ 2 ]

3 голосов
/ 12 октября 2010
;With Person As
(
SELECT 1 AS Id, 'John' AS FirstName, 'Smith' AS LastName UNION ALL
SELECT 2 AS Id, 'Jim' AS FirstName, 'Adams' AS LastName 
)
,
UDF AS
(
SELECT 2 PersonId, 'Age' FieldName, '28' FieldValue UNION ALL
SELECT 2, 'Status', 'Available'
)
SELECT Id, FirstName, LastName, Age, Status
FROM Person p
LEFT OUTER JOIN UDF ON p.Id = UDF.PersonId
PIVOT (MAX(FieldValue) FOR FieldName IN ([Age],[Status])) pvt

Вы можете генерировать эту строку динамически и использовать динамический SQL, если вы не знаете заранее необходимые столбцы.

2 голосов
/ 12 октября 2010

К сожалению, вы бы не хотели знать столбцы перед использованием PIVOT

Или вы должны создать его динамически

см.

Примеры динамических сводных таблиц T-SQL для SQL Server 2008

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