mysql - 如何正确地将 SQL 行转换为列?
问题描述
在有人提到它之前,我已经在 Stack 上看到了完全相同的 SQL 问题,从我的角度来看,这实际上是将列转换为行。我想要完成的工作如下图所示,鉴于顶部,我想创建一个新表,其中包含在这个意义上翻转的先前数据。
解决方案
您可以使用条件聚合,union all
如下所示:
select name_new,
max(case when name = 'PersonA' then A end) as PersonA,
max(case when name = 'PersonB' then A end) as PersonB,
max(case when name = 'PersonC' then A end) as PersonC
from
(select name, 'A1' name_new, A1 A from mytable union all
select name, 'A2' name_new, A2 A from mytable union all
select name, 'A3' name_new, A3 A from mytable union all
select name, 'A4' name_new, A4 A from mytable ) t
group by name_new
推荐阅读
- html - 使用 d3.js 添加不带值的属性
- c# - 打开pdf文件的未知加密类型
- javascript - 3 秒后移除 div 覆盖
- list - Prolog 得到 NxN 矩阵的平方
- angular - 我怎样才能让这个角度动画重复?
- php - 如何仅在美元符号 1 ($1) 中替换正则表达式 preg 中的字符?
- python - 如何使用用户的输入在 Flask - Python 中运行另一个函数?
- javascript - JavaScript 中的密码字符检查器
- java - 使用 Facebook Graph Api 获取 FB ID
- assembly - 如何获取 VESA BIOS 信息