子查询有 10 条记录和 5 列,外部查询必须根据子查询内的值创建一个列

问题描述 投票:0回答:1

例如:子查询

子查询返回带有 :

的行

(从表a中选择roll_no,姓名,主题,标记,结果)

Roll_no     Name   Subject         Mark   Result
 1           J       Math           90     P
 1           J       English        80     P
 1           J       Lang           30     F
 1           J       Science        60     P
 1           J       History        70     P     

我希望主查询创建一个包含子查询中所有值的指示器,如果子查询中的一条记录在上述 5 条记录的结果列中具有值 F,则在主查询中创建 5 条记录,所有记录的等级为 F,其他记录为 P主查询共 5 条记录

选择 a.* ,成绩来自(选择 roll_no 、 name 、 subject 、 mark 、 result from tablea )作为 a

Roll_no     Name   Subject         Mark   Result    Grade
 1           J       Math           90     P          F
 1           J       English        80     P          F 
 1           J       Lang           30     F          F
 1           J       Science        60     P          F
 1           J       History        70     P          F 
sql postgresql greenplum
1个回答
0
投票

使用窗口函数,您可以执行以下操作:

Select roll_no , name , subject, mark , result, 
  MIN(result) OVER () as Grade
from tablea

这将返回结果集的最小值(结果),并对每条记录重复,因此即使出现一个

F
,那么每条记录都会显示
F

dbfiddle 在这里

© www.soinside.com 2019 - 2024. All rights reserved.