如何将所有列变成名称和值 SQL(如 Python 中的 pd.unstack(level=-1))
How to turn all columns into just name and value SQL (like pd.unstack(level=-1) in Python)
假设我们有一个 table 比如:
date element1 element2 element3....
date1 42 30 63
date2 32 23 2
date3 23 3 15
如何将这个table变成类似
的东西
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;
注意:不同的数据库以不同的方式对 运行 有自己的风格。
您可以将 unpivot
与 SQL 服务器和 Oracle 一起使用。
select date,
elements,
value
from yourtable
unpivot
(
value
for elements in (element1, element2, element3)
) unpiv
假设我们有一个 table 比如:
date element1 element2 element3....
date1 42 30 63
date2 32 23 2
date3 23 3 15
如何将这个table变成类似
的东西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;
注意:不同的数据库以不同的方式对 运行 有自己的风格。
您可以将 unpivot
与 SQL 服务器和 Oracle 一起使用。
select date,
elements,
value
from yourtable
unpivot
(
value
for elements in (element1, element2, element3)
) unpiv