首页 > 解决方案 > 如何将所有列转换为名称和值 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 ...

这就像一种枢轴,但我不明白。如果有人知道这方面的捷径,我将不胜感激。

谢谢

标签: sqlunpivot

解决方案


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;

注意:不同的数据库有自己的风格以不同的方式运行它。


推荐阅读