SQL查询行作为列[重复]
Posted
技术标签:
【中文标题】SQL查询行作为列[重复]【英文标题】:SQL query rows as columns [duplicate] 【发布时间】:2014-04-09 18:38:48 【问题描述】:我有一个这样的数据表:
RecID Name Value
1 Color Red
2 Size Small
3 Weight 20lbs
4 Shape Square
我需要一个将行作为列返回的查询,如下所示:
Color Size Weight Shape
Red Small 20lbs Square
执行此操作的 SQL 查询会是什么样子?我无法将任何值硬编码到查询中,它只需要读取名称和值对并水平重新定向它们。
【问题讨论】:
你们一直标记为重复的答案没有我需要的答案。 此处正确答案:***.com/questions/23060311/… 【参考方案1】:测试数据
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 ║
╚═══════╩═══════╩════════╩════════╝
【讨论】:
我无法硬编码 [Color]、Size],就像您在 IN 分组中那样。有没有办法查询名称值对并在不知道它们是什么的情况下水平重新定向它们? 要动态旋转未知数量的列,请参阅此答案How to pivot unknown number of columns & no aggregate in SQL Server?
,如果此答案对您有所帮助,请考虑接受它作为您的答案,谢谢。
SQL 不是最好的,我会看看我想出什么。谢谢!以上是关于SQL查询行作为列[重复]的主要内容,如果未能解决你的问题,请参考以下文章