SQL Server Query - 如何逐行转置并将它们堆叠起来? [复制]

Posted

技术标签:

【中文标题】SQL Server Query - 如何逐行转置并将它们堆叠起来? [复制]【英文标题】:SQL Server Query - how transpose line by line and stack them up? [duplicate] 【发布时间】:2018-10-04 12:55:04 【问题描述】:

我想改造下表:

ID      Var1  Var2  Var3  Var4
112233  1     2     3     4
112233  5     6     7     8
112233  9     10    11    12

变成如下的样子

ID      VarName      Value
112233     Var1      1
112233     Var1      2
112233     Var1      3
112233     Var1      4
112233     Var2      5
112233     Var2      6
112233     Var2      7
112233     Var2      8
112233     Var3      9
112233     Var3      10
112233     Var3      11
112233     Var3      12

有简单的方法吗?

【问题讨论】:

【参考方案1】:

使用反透视:

demo

select id,varname, value from tablename
Unpivot
(
  value for varname in (var1, var2, var3,var4)

) as UnPvt

【讨论】:

【参考方案2】:

你可以使用apply

select id, VarName, value
from table t cross apply
     ( values ('Var1', var1), ('Var2', var2), ('Var3', var3)
     ) tt (VarName, value)
order by VarName;

【讨论】:

以上是关于SQL Server Query - 如何逐行转置并将它们堆叠起来? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL Developer:如何使用 PIVOT 函数将行转置为列

sql server 2012 行转列

在 Spark SQL (pyspark) 中将行转置为列

在 SQL 中将行转置为列标题

SQL 将行转置为列

SQL将行转置为列(按键变量分组)?