首页 > 数据库 > mysql教程 > 如何使用 CASE 和 GROUP BY 在 SQLite 中将长格式数据转换为宽格式数据?

如何使用 CASE 和 GROUP BY 在 SQLite 中将长格式数据转换为宽格式数据?

Linda Hamilton
发布: 2025-01-10 13:01:46
原创
807 人浏览过

How to Pivot Long to Wide Format Data in SQLite Using CASE and GROUP BY?

使用 SQLite 将表格数据从长格式转换为宽格式

在数据分析中,经常需要将数据从长格式(每行代表一条记录,多列代表不同的值)转换为宽格式(每条记录占据多列)。此操作称为数据透视。

我们有一个名为 markdetails 的表,结构如下:

  • studid subjectid marks

    A1 3 50
    A1 4 60
    A1 5 70
    B1 3 60
    B1 4 80
    C1 5 95

还有一个名为 student_info 的表,结构如下:

  • studid name

    <code>  A1          Raam
      B1          Vivek
      c1          Alex</code>
    登录后复制

我们希望将此数据透视成以下宽格式:

  • studid name subjectid_3 subjectid_4 subjectid_5

    <code>  A1        Raam        50                60                 70
      B1        Vivek       60                80                NULL
      c1        Alex       NULL              NULL                95</code>
    登录后复制

一种实现方法是使用 CASE 语句和 GROUP BY。以下查询将返回所需的宽格式:

<code class="language-sql">SELECT
    si.studid,
    si.name,
    SUM(CASE WHEN md.subjectid = 3 THEN md.marks END) AS subjectid_3,
    SUM(CASE WHEN md.subjectid = 4 THEN md.marks END) AS subjectid_4,
    SUM(CASE WHEN md.subjectid = 5 THEN md.marks END) AS subjectid_5
FROM student_info si
JOIN markdetails md ON
    md.studid = si.studid
GROUP BY si.studid, si.name;</code>
登录后复制

以上是如何使用 CASE 和 GROUP BY 在 SQLite 中将长格式数据转换为宽格式数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

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