【问题标题】:SQL server Pivot Table columns from other table来自其他表的 SQL Server 数据透视表列
【发布时间】:2015-06-19 14:48:54
【问题描述】:

我有这个数据透视表:

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

问题是:

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

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql pivot-table


    【解决方案1】:

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

    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
    

    【讨论】:

    • 干得好。即使手动添加列表可能会更好。但你答对了!
    • 谢谢!是的,最好避免这种情况,但有时你需要具备这种能力;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 2017-11-25
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多