sql - 如何将所有列转换为名称和值 SQL(如 Python 中的 pd.unstack(level=-1) )
问题描述
假设我们有一个像这样的表:
date element1 element2 element3....
date1 42 30 63
date2 32 23 2
date3 23 3 15
如何把这张桌子变成类似的东西
date elements value
date1 element1 42
date2 element1 32
date3 element1 23
date1 element2 30
date1 element3 ...
这就像一种枢轴,但我不明白。如果有人知道这方面的捷径,我将不胜感激。
谢谢
解决方案
在SQL
你可以使用union all
:
select t.*
from ( (select date, 'element1' as elements, element1 from table t) union all
(select date, 'element2' as elements, element2 from table t) union all
(select date, 'element3' as elements, element3 from table t) union all
. . .
) t
order by date, elements;
注意:不同的数据库有自己的风格以不同的方式运行它。
推荐阅读
- html - 图像 src 未在剃刀视图中读取 base64 字符串
- amazon-web-services - 更新 ECS 集群中 Fargate 定时任务的任务定义
- numpy - 使用 Numpy 向量化的循环
- android - (FragmentDirections 类),GameFragmentDirections(在这种情况下)在使用安全参数时未生成
- python-3.x - PyQt5 从主窗口打开第二个窗口
- sql - 如何在json中创建类似表的结构
- swift - 为什么我的 stackview 没有填充我以编程方式添加的视图?
- java - ECDH ServerKeyExchange 签名无效
- python - 是否可以在 Python 中使用 Django 框架动态更改屏幕模板?
- python - SQL Alchemy 选择数据