我的数据库允许用户定义字段(UDF),在select期间,我想将常规表字段与另一个表中的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查看示例。
由于
答案 0 :(得分:3)
;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。
答案 1 :(得分:2)