SQL查询行作为列

SQL查询行作为列,sql,sql-server,pivot,Sql,Sql Server,Pivot,我有这样一个数据表: RecID Name Value 1 Color Red 2 Size Small 3 Weight 20lbs 4 Shape Square Color Size Weight Shape Red Small 20lbs Square 我需要一个以列形式返回行的查询,如下所示: RecID Nam

我有这样一个数据表:

RecID     Name      Value
1         Color     Red
2         Size      Small
3         Weight    20lbs
4         Shape     Square
Color     Size     Weight     Shape
Red       Small    20lbs      Square
我需要一个以列形式返回行的查询,如下所示:

RecID     Name      Value
1         Color     Red
2         Size      Small
3         Weight    20lbs
4         Shape     Square
Color     Size     Weight     Shape
Red       Small    20lbs      Square

SQL查询是什么样子的?我无法将任何值硬编码到查询中,它只需要读取名称和值对并将其水平重新定向。

测试数据

DECLARE @Table TABLE(RecID INT,Name VARCHAR(20),Value VARCHAR(20))
INSERT INTO @Table VALUES
(1,'Color' ,'Red'),
(2,'Size'  ,'Small'),
(3,'Weight','20lbs'),
(4,'Shape' ,'Square')
查询

SELECT *
FROM
(SELECT Name,Value 
FROM @Table) T
PIVOT ( MAX(Value)
        FOR Name
        IN ([Color],[Size],[Weight],[Shape])
        )P
结果集

╔═══════╦═══════╦════════╦════════╗
║ Color ║ Size  ║ Weight ║ Shape  ║
╠═══════╬═══════╬════════╬════════╣
║ Red   ║ Small ║ 20lbs  ║ Square ║
╚═══════╩═══════╩════════╩════════╝

你们一直标记为副本的答案没有我需要的答案。正确答案:我不能硬编码[颜色],{Size]如您在in分组中所用。是否有一种方法可以查询名称-值对并在不知道它们是什么的情况下水平重新定向它们?若要动态透视未知列数,请查看此答案,如果此答案对您有所帮助,请Conditor接受它作为您的答案谢谢。SQL不是最好的,我将查看I c谢谢你的帮忙!