Sql server 具有重复列名的动态透视表

Sql server 具有重复列名的动态透视表,sql-server,tsql,dynamic-pivot,Sql Server,Tsql,Dynamic Pivot,我有下表: Name | Value --------------------------- key1 | val1 key2 | val2 key1 | val3 key4 | val4 . | . . | . . | . . | . 我需要输出如下: k

我有下表:

Name       |       Value
---------------------------
key1       |       val1
key2       |       val2
key1       |       val3
key4       |       val4
.          |       .
.          |       .
.          |       .
.          |       .
我需要输出如下:

key1       |    key2       |    key1       |    key4      |    ......
-----------------------------------------------------------------------------
val1       |    val2       |    val3       |    val4      |    ...... 
我曾尝试使用DynamicPivot实现这一点,但失败了,因为key1是一个重复的列

SQLError: 为“p”多次指定了列“key1”

我使用的透视查询:

这可能不可能使用轴,因为列名相同。下面是另一个解决方案:

DECLARE @sql AS NVARCHAR(MAX)

SELECT @sql = STUFF((SELECT ',''' + value + ''' as ' + QUOTENAME(Name)
                    from mytable
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

EXEC ('select '+ @sql)
结果:

key1    key2    key1    key4
val1    val2    val3    val4

要求是选择结果表中的所有列。我理解这些列在透视图中必须是唯一的。您是否看到了一种获得我所需要的结果的方法(可能不是旋转)。@user3796907发布带有问题的实际代码是一个非常好的主意。如果我的问题不够清楚,很抱歉。但我在问题本身中提到了我所期望的结果。目前我仅有的代码是我发布的SQLFIDLE。也许我没有完全理解你的问题。你能再多说一点吗?克劳森,我运行了你给出的查询,但我没有看到相同的结果。在这里,当我在自己的服务器上尝试时,它显示了正确的结果,但是SQL Fiddle出于某种原因忽略了键3。我认为pivot无法实现这一点,但根据输出要求,可能还有其他解决方案。您需要用结果创建一个新表,还是只显示/打印/导出它?