0

我有下表:

Name       |       Value
---------------------------
key1       |       val1
key2       |       val2
key1       |       val3
key4       |       val4
.          |       .
.          |       .
.          |       .
.          |       .

我需要输出如下:

key1       |    key2       |    key1       |    key4      |    ......
-----------------------------------------------------------------------------
val1       |    val2       |    val3       |    val4      |    ...... 

我曾尝试使用动态透视来实现这一点,但它失败了,因为 key1 是一个重复的列。

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

我使用的透视查询: http://sqlfiddle.com/#!3/33f66/4

4

1 回答 1

1

由于列名是相同的,因此使用数据透视可能无法做到这一点。这是另一个解决方案:

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
于 2014-07-02T10:52:26.683 回答