将列动态转换为行,然后与其他表连接

时间:2018-05-20 20:13:59

标签: sql sql-server

我有两个表,我喜欢组合在一起,第一个只是一个普通的表。但第二个结构我遇到了问题。enter image description here 我需要将列[Name]中的行转换为列。我遇到的两个问题是图片只显示来自一个id的数据,我需要转换不同的列列表,然后将[value]列显示为行。第二个问题是在仍然与图中的表一起加入主表时执行所有这些操作。我知道枢轴存在,我已经尝试过了。但是无法让它工作,只需使用主表。 有人有想法要解决这个问题吗? 这是我不成功的尝试。

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME([Name]) 
                    from [dbo].[TfsItem]
                    group by [Name]
                    order by [Name]
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

        SELECT @cols
set @query = N'SELECT ' + @cols + N' from 
             (
                select value, [Name]
                from [dbo].[TfsItem]
            ) x
            pivot 
            (
                max(value)
                for [Name] in (' + @cols + N')
            ) p '

exec sp_executesql @query;

0 个答案:

没有答案