在 SQL PIVOT 中拆分串联 FOR

Splitting Concatenated FOR in SQL PIVOT

我在下面使用 Dynamic SQL 创建新列并将它们旋转出来,但是 [MonthList] 字段是串联的,需要以某种方式拆分它,因为它目前 [Monthly Rate] 值仅当 [MonthList] = @PivotColumns 名称

table 示例:

当前代码:

Set @SQLQuery = 
    N'SELECT *
    FROM [dbo].[TableA] 
    PIVOT( sum([Monthly Rate])
FOR [MonthsList] IN (' + @PivotColumns + ')) as P'

EXEC sp_executesql @SQLQuery

感谢您的帮助!

设法使用 Cursor 得出答案。如果有人对这里感兴趣:

DECLARE @Q NVARCHAR(4000),
@CName VARCHAR(255)

DECLARE ColCur CURSOR
FOR
SELECT C.name as Column_name
FROM sys.columns C
LEFT JOIN sys.tables t
on C.object_id = t.object_id
WHERE t.name = 'TableA'

OPEN ColCur

FETCH NEXT FROM ColCur INTO @CName


WHILE(@@FETCH_STATUS =0)
BEGIN

SET @Q = 
case when @CName like '___''__' then
'UPDATE TableA
SET ['+@CName+'] = [Monthly Rate]
WHERE [MonthsList] like ''%'+replace(@CName,char(39),char(39)+char(39))+'%'''
Else ''
end
--print @q
EXEC sp_executesql @Q

FETCH NEXT FROM ColCur INTO @CName

END

CLOSE ColCur
DEALLOCATE ColCur