首页 > 数据库 > mysql教程 > 如何使用 CASE WHEN 透视 SQL 列将行数据转换为列?

如何使用 CASE WHEN 透视 SQL 列将行数据转换为列?

Mary-Kate Olsen
发布: 2025-01-11 16:02:46
原创
842 人浏览过

How to Pivot a SQL Column Using CASE WHEN to Transform Row Data into Columns?

使用 CASE WHEN 进行 SQL 列透视

需要将 SQL 数据从行转换为列? CASE WHEN 语句提供了一种简单的数据透视解决方案,特别是在处理需要聚合的列中包含重复值的表时。

让我们用一个例子来说明。 想象一下这张桌子:

<code class="language-sql">Bank:
name  val   amount
John   1     2000
Peter  1     1999
Peter  2     1854
John   2     1888</code>
登录后复制

我们的目标:将其重组为一个表,其中唯一的“val”值成为列,每个唯一的“name”是一行。所需的输出:

<code class="language-sql">name  amountVal1 amountVal2  
John    2000        1888   
Peter   1999        1854    </code>
登录后复制

以下是如何使用 SUM()CASE WHEN 实现此枢轴:

<code class="language-sql">SELECT 
  name,
  SUM(CASE WHEN val = 1 THEN amount ELSE 0 END) AS amountVal1,
  SUM(CASE WHEN val = 2 THEN amount ELSE 0 END) AS amountVal2
FROM bank
GROUP BY name;</code>
登录后复制

此查询使用 SUM() 聚合每个唯一 amountname 组合的 val 值。 CASE WHEN 语句检查 val 是 1 还是 2,并相应地分配相应的 amountGROUP BY name 确保每个唯一名称一行。 结果呢? amountVal1amountVal2 列整齐地表示透视数据。 此方法对于已知的、有限数量的 val 值有效。对于动态数量的值,请考虑使用 PIVOT 或其他更高级的技术。

以上是如何使用 CASE WHEN 透视 SQL 列将行数据转换为列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板