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谢谢你的帮忙!