PostgreSQL上的枢轴行 [英] Pivot Row on PostgreSQL
本文介绍了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屋!
查看全文