postgresql SQL|选择行作为列[重复]

eqfvzcg8  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(179)

此问题已在此处有答案

How do you flip rows into new columns?(1个答案)
PIVOT VIEW using PostgreSQL(2个答案)
15天前关闭。
我有一个表模式如下:
| 学生证|主题|马克斯|
| - -----|- -----|- -----|
| 1|数学|十个|
| 1|物理学|三十|
| 2|数学|二十五|
我想选择以下格式的值:
| 学生证|数学|物理学|
| - -----|- -----|- -----|
| 1|十个|三十|
| 2|二十五||
你能建议如何在SQL中实现这一点吗?我用的是PostgreSQL。
或者我必须用Java来做,因为这是我们的中间件?
谢谢你。

lp0sw83n

lp0sw83n1#

您可以使用crosstab函数,它属于tablefunc模块。首先,下载模块。
之后你可以使用这个查询(* 必要的插入可以找到here *):

SELECT *
FROM crosstab(
    'select student_id, subject, mark::text 
     from student_marks
     order by student_id ASC, mark ASC'
) AS ct(entity_id integer, "Math" text, "Physics" text);

这里crosstab接收1个参数,一个文本形式的SQL查询,并将查询结果转置到以下列中:entity_idMathPhysics
你可以在这里找到更多关于crosstab的信息:* * onetwo**。

相关问题