我想建立一个PIVOT
表,但我可能不得不使用动态 SQL 除非该IN
子句可以在常规 SQL 中构建。我想做这样的事情:
SELECT *
FROM
(
SELECT x, y, z...
) srcTable
PIVOT
(
MIN(srcTable.TimesDownloaded) FOR OrganizationName IN (SELECT CONCAT('Download_', OrganizationName) FROM AdamUser GROUP BY OrganizationName)
) pivotTable
因此,当我从SELECT
unique OrganizationName
sAdamUser
和 prefixDownload_
时,这给了我一个表,其行值等于我想要的列的名称。虽然这是无效的语法。我是否总是必须对PIVOT
列名进行硬编码?
FROM 子句的 T-SQL 文档具有以下规范:
所以不,它不允许您使用 SELECT 语句选择列名,是的,您必须“硬编码”
PIVOT
列名。