当前位置: 首页 > 面试题库 >

转置键值对SQL表

庾勇军
2023-03-14
问题内容

我有一个表,其中包含几列,包括一个键值对。想象一下:

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/zh-
cn/library/ms177410(SQL.105).aspx



 类似资料:
  • 反转对象的键值对,而不会改变它。 使用 Object.keys() 和 Array.reduce() 来反转对象的键值对。 const invertKeyValues = obj => Object.keys(obj).reduce((acc, key) => { acc[obj[key]] = key; return acc; }, {}); invertKeyValu

  • 根据一个对象中创建一个键-值对数组。 使用 Object.keys() 和 Array.map() 遍历对象的键并生成一个包含键值对的数组。 const objectToPairs = obj => Object.keys(obj).map(k => [k, obj[k]]); objectToPairs({ a: 1, b: 2 }); // [['a',1],['b',2]]

  • 问题内容: 给定一个JavaScript对象,如何将其转换为对象数组(每个对象都带有键,值)? 例: 结果像: 问题答案: var data = { firstName: ‘John’, lastName: ‘Doe’, email: 'john.doe@gmail.com‘ }

  • 问题内容: 我有一个SQL查询返回1行,其中包含多个列标题: 有没有一种方法可以将该行转换为2列,即: 这是在SQLServer 2008 r2上运行 编辑:添加一个更好的例子 来自一个简单的 类型查询。我要显示的是: 问题答案: 试试这个

  • 因为匹配器“*”丢弃简单键值对。我知道我错过了什么。有人帮忙吗?

  • 我有一个旋转器,我想在这个上面设置一个键和一个值,我使用HashMap,这是工作,但显示一行,如下所示: 代码: