liv*_*ove 14 sql t-sql sql-server pivot
是否可以从表中执行PIVOT并选择列表,而不是使用单个值?
像这样(语法错误不正确):
SELECT *
FROM (
SELECT RepID, MilestoneID, ResultID FROM RM
) AS src
PIVOT (
MAX(ResultID) FOR MilestoneID IN (SELECT id FROM m)
) AS pvt
Run Code Online (Sandbox Code Playgroud)
这个编译,但不适合我:
SELECT *
FROM (
SELECT RepID, MilestoneID, ResultID FROM RM
) AS src
PIVOT (
MAX(ResultID) FOR MilestoneID IN ([1], [2], [3], [4])
) AS pvt
Run Code Online (Sandbox Code Playgroud)
PS:我不想使用动态SQL,有没有办法在不使用动态SQL的情况下执行此操作?
小智 5
可以办到。
DECLARE @idList varchar(500)
SET @idList = COALESCE(@idList + ',', '') + id
FROM m
DECLARE @sqlToRun varchar(1000)
SET @sqlToRun = '
SELECT *
FROM (
SELECT RepID, MilestoneID, ResultID FROM RM
) AS src
PIVOT (
MAX(ResultID) FOR MilestoneID IN ('+ @idList +')
) AS pvt'
EXEC (@sqlToRun)
Run Code Online (Sandbox Code Playgroud)