将列转换为行

Posted

技术标签:

【中文标题】将列转换为行【英文标题】:Convert column into the rows 【发布时间】:2021-05-18 07:05:12 【问题描述】:

这是我当前查询的结果集:

Question   Sol25A   Sol25B   Sol25C   Sol40A   Sol40B
======================================================
A           1        4          2       6         0
B           2        3          2       1         9
C           6        7          1       0         8
======================================================
Total =    9         14         5       7         17
======================================================

我想要这种形式的结果:

Product   Total
===============
Sol25A      9
Sol25B      14
Sol25C      5
Sol40A      7
Sol40B      17

你能帮我提供一下查询吗,这对我有很大的帮助。

【问题讨论】:

SO 不是代码编写服务。您需要进行一些研究,尝试一下,并且仅在遇到困难时才发布问题。正如对您的第一个问题所评论的那样。事实上,这个问题似乎与您的第一个问题非常相似?除了您的尝试之外,您还应该用文字解释您的逻辑。 更好地自己构建查询,如果它不起作用,请向我们展示并让它修复。 SO 不是代码编写服务。 用 GROUP BY 联合所有。 【参考方案1】:

我建议您使用 cross apply 取消透视然后聚合:

select product, sum(val)
from t cross apply
     (values ('Sol25A', Sol25A), ('Sol25B', Sol25B), ('Sol25C', Sol25C),
             ('Sol40A', Sol40A), ('Sol40B', Sol40B)
     ) v(product, val)
group by product;

【讨论】:

以上是关于将列转换为行的主要内容,如果未能解决你的问题,请参考以下文章

MySQL将列转换为行

SQL 将列转换为行

将列值转换为行值

Postgres 表选择多列并将结果(列)动态转换为行 - 将列转置为行

sql 将列数据转换为行

PostgreSQL 将列转换为行?转置?