PostgreSQL上的枢轴行 [英] Pivot Row on PostgreSQL

查看:80
本文介绍了PostgreSQL上的枢轴行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个返回整行的查询,我需要将此结果转换到新表中.

I have a query that returns an entire row and I need to pivot this result into a new table.

SELECT id_no, stud_name, group_no, class_1, class_2, class_3, class_4 FROM tbl_stud_class

这将返回以下内容:

| id_no | stud_name | group_no | class_1 | class_2 | class_3 | class 4 |
| 1     | John Doe  | A11      | 84      | 60      | 80      | 79      |

我需要能够以以下形式返回此行:

I need to be able to return this row as:

| id_no | stud_name | group_no | class   | grade |
| 1     | John Doe  | A11      | class_1 | 84    |
| 1     | John Doe  | A11      | class_2 | 60    |
| 1     | John Doe  | A11      | class_3 | 80    |
| 1     | John Doe  | A11      | class_4 | 79    |

有人可以指出我的一种方法吗? 我是PostgreSQL的新手,所以我不知道从哪里开始以及如何开始.

Can someone point me to a way to do this please? I am very new to PostgreSQL so I have no idea where and how to start.

谢谢!

推荐答案

您还可以使用横向

SELECT id_no, stud_name, group_no, class, grade
FROM   tbl_stud_class 
       CROSS JOIN LATERAL ( VALUES
                     ('class_1', class_1),
                     ('class_2', class_2),
                     ('class_3', class_3),
                     ('class_4', class_4)
            ) l(class, grade)

这篇关于PostgreSQL上的枢轴行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆