我有一个动态列动态创建的表。列A和列B是静态的,其余列是根据另一个表的结果动态创建的。请考虑以下示例代码
SELECT dutydate, dayname, shifts, myShift
FROM
(SELECT column A, column B, dynamic column C, dynamic column D, dynamic column E, ...... (columns may increase)
FROM temp) p
UNPIVOT
(myShift FOR shifts IN ( dynamic column C, dynamic column D, dynamic column E, ...... (columns may increase) ))
AS unpvt;
临时表是动态创建的表。有没有办法根据上述情况进行转置。
答案 0 :(得分:0)
您没有编写如何使用动态列创建表格。你可以做的是将命令创建为包含列表的字符串,然后只执行字符串。
即
declare @cmd varchar(max), @list_of_dynamic_columns varchar(255)
set @list_of_dynamic_columns = 'co1, col2, col2'
set @cmd = 'SELECT dutydate, dayname, shifts, myShift
FROM
(SELECT column A, column B, '+@list_of_dynamic_columns +'
FROM temp) p
UNPIVOT
(myShift FOR shifts IN ( '+@list_of_dynamic_columns +' ))
AS unpvt;'
print @cmd -- to see what you executed
exec (@cmd)
您需要做的只是在@ list_of_dynamic_columns
中创建列表