首页 > 解决方案 > 动态将列转换为行,然后与其他表连接

问题描述

我有两张我喜欢组合在一起的桌子,第一张只是一张普通的桌子。但第二个结构我有问题。在此处输入图像描述 我需要将 [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;

标签: sqlsql-server

解决方案


推荐阅读