来自其他表的SQL server数据透视表列

来自其他表的SQL server数据透视表列,sql,sql-server,sql-server-2008,tsql,pivot-table,Sql,Sql Server,Sql Server 2008,Tsql,Pivot Table,我有一张透视表: select * from TEST_COUNT_LINE_IMP pivot (SUM (COUNT_CICLI) for Impiego in ([AT],[CL],[PD],[PR],[RC],[RW],[RV],[SP],[TR],[PV],[ST])) as T1 列表:[AT]、[CL]、[PD]、[PR]、[RC]、[RW]、[RV]、[SP]、[TR]、[PV]、[ST] 来自另一张桌子: SELECT AFCDIMPI FROM ANA_IMPIEGHI

我有一张透视表:

select *
from TEST_COUNT_LINE_IMP
pivot (SUM (COUNT_CICLI) for Impiego in ([AT],[CL],[PD],[PR],[RC],[RW],[RV],[SP],[TR],[PV],[ST])) as T1
列表:
[AT]、[CL]、[PD]、[PR]、[RC]、[RW]、[RV]、[SP]、[TR]、[PV]、[ST]
来自另一张桌子:

SELECT AFCDIMPI
FROM ANA_IMPIEGHI
问题是:

我可以用子查询替换该列表吗?
谢谢

我认为在这种情况下应该使用动态查询。下面我举了一个例子,希望能对您有所帮助:

DECLARE @statement NVARCHAR(max)
,@columns NVARCHAR(max)

SELECT @columns = ISNULL(@columns + ', ', '') + '[' + tbl.ColName + ']'
FROM (
   SELECT DISTINCT ColName
   FROM TableName
   ) AS tbl

SELECT @statement = ' SELECT * FROM TableName as tbl PIVOT (MAX(tbl.VALUE) for tbl.ColName in (' + @columns + ')) as pvt'

EXEC sp_executesql @statement = @statement

干得好即使手动添加列表可能更好。但是你答对了!谢谢是的,最好避免这种情况,但有时你需要具备这种能力;)