oracle sql查询-基于优先级填充值
表1列出了为学生公布的分数详情。现在所有的分数都还没有出来,根据empid,很少有人发表 表1 表2列出了本学期所有科目的详细情况以及优先顺序 表2 表1列出了每个学生已公布的科目分数的详细信息。 表2列出了semister中subgrp中存在的所有主题的详细信息 我想写一个查询以了解以下内容oracle sql查询-基于优先级填充值,sql,database,oracle,Sql,Database,Oracle,表1列出了为学生公布的分数详情。现在所有的分数都还没有出来,根据empid,很少有人发表 表1 表2列出了本学期所有科目的详细情况以及优先顺序 表2 表1列出了每个学生已公布的科目分数的详细信息。 表2列出了semister中subgrp中存在的所有主题的详细信息 我想写一个查询以了解以下内容 如果你仔细观察,Tab2是我的主表,Tab1是左接的,这样我就可以考虑Tab2的所有值。 查询的输出 subgrp,empid,subject,marks,priority 1 ,4 ,ph
如果你仔细观察,Tab2是我的主表,Tab1是左接的,这样我就可以考虑Tab2的所有值。 查询的输出
subgrp,empid,subject,marks,priority
1 ,4 ,phy ,90 ,1
1 ,4 ,math ,null ,2
1 ,4 ,ls ,90 ,3
1 ,4 ,eng ,null ,4
1 ,4 ,eco ,null ,5
1 ,5 ,phy ,null ,1
1 ,5 ,math ,null ,2
1 ,5 ,ls ,null ,3
1 ,5 ,eng ,80 ,4
1 ,5 ,eco ,66 ,5
我试图编写的查询不完整,因为我无法将逻辑转换为sql
select a.subgrp,a.emoid , a.sub as subject,a.marks,b.priority from
tab2 a left join tab1 b on a.subgrp=b.subgrp and a.sub=b.sub
我无法写下逻辑,即如何根据tab2数据为每个emp id填充5条记录
任何人都可以帮助..使用
交叉连接来生成行,使用左连接来引入数据:
select t2.substr, e.empid, t2.subject, t.marks, t2.priority
from (select distinct empid from tab1
) e cross join
tab2 t2 left join
tab1 t
on t.empid = e.empid and
t.subgrp = t2.subgrp and
t.sub = t2.sub
order by e.empid, t2.priority;
使用交叉连接
生成行,使用左连接
引入数据:
select t2.substr, e.empid, t2.subject, t.marks, t2.priority
from (select distinct empid from tab1
) e cross join
tab2 t2 left join
tab1 t
on t.empid = e.empid and
t.subgrp = t2.subgrp and
t.sub = t2.sub
order by e.empid, t2.priority;
您可以使用交叉连接
,然后在其上使用分组方式
Select t1.subgrp,
t1.empid,
t2.subject,
Max(t1.marks) as marks,
t2.priority
From tab1 t1 cross join tab2 t2
Group by t1.subgrp,
t1.empid,
t2.subject,
t2.priority
干杯 您可以使用交叉连接
,然后在其上使用分组方式
Select t1.subgrp,
t1.empid,
t2.subject,
Max(t1.marks) as marks,
t2.priority
From tab1 t1 cross join tab2 t2
Group by t1.subgrp,
t1.empid,
t2.subject,
t2.priority
干杯 @leftjoin。首先,这个问题被标记为Oracle,它的标题中包含Oracle。所以我不确定Hive指的是什么。我可能看到的唯一问题是subgrp
也可能用于员工。但是OP没有解释这一点。@leftjoin。首先,这个问题被标记为Oracle,它的标题中包含Oracle。所以我不确定Hive指的是什么。我可能看到的唯一问题是subgrp
也可能用于员工。但OP没有解释这一点。