sql - 转置键值对 SQL 表

标签 sql sql-server sql-server-2008

我有一个由几列组成的表,包括键值对。想象一下:

BookID, Key, Value
MyBook, Price, 19.99
MyBook, ISBN, 987878495793
MyBook, Pages, 354
MyBook2, ...., ....
MyBook2, ...., ....

我需要将其转化为以下格式:

BookID, Price, ISBN, Pages
MyBook, 19.99, 987878495793, 354
MyBook2,.....,.............,....

即转置单元格 - 我将如何在 SQL 中执行此操作?

最佳答案

是这样的吗?

SELECT
  BookID, Price, ISBN, Pages
FROM
(
  SELECT BookID, Key, Value FROM yourTable
)
  AS SourceTable
PIVOT
(
  SUM(Value) FOR Key IN (Price, ISBN, Pages)
)
  AS PivotTable
ORDER BY
  BookID

http://technet.microsoft.com/en-us/library/ms177410(SQL.105).aspx

关于sql - 转置键值对 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11224954/

相关文章:

mysql - 合并数据库中的两个表

需要Mysql优化帮助

sql-server - 使用 order by 插入速度更快

java - 存储过程仅返回多行中的一行

sql-server - 如何从 Azure SQL 迁移到 SQL Server?

MYSQL - 当 DO 存在和不存在时进行 SubSelect

sql-server - 将XML直接从SQL Server输出到文件

sql-server - SQL Server 代理作业 - 将结果导出到制表符分隔文件?

c# - 如何在 winforms C# 中将数据从一种表单传输到另一种表单?

PHP/MySQL : select from table and update in one query