在oracle中与group by子句正确连接

时间:2016-04-15 01:49:06

标签: oracle oracle11g

请在下面与我分享您的意见

我在oracle 11g中有两个数据集

设置1:

empid-Qtr-salary
1-Q3FY16-2000
1-Q2FY16-1000
2-Q3FY16-2000
2-Q2FY16-3000
2-Q1FY16-4000
2-Q4FY15-5000
3-Q2FY16-7000
3-Q1FY16-8000
enter code here

设置2

id-qtr
1-Q3FY16
2-Q2FY16
3-Q1FY16
4-Q4FY15

预期输出

enter code here
1-Q3FY16-2000
1-Q2FY16-1000
1-Q1FY16-NULL
1-Q4FY15-NULL
2-Q3FY16-2000
2-Q2FY16-3000
2-Q1FY16-4000
2-Q4FY15-5000
3-Q3FY16-NULL
3-Q2FY16-3000
3-Q1FY16-7000
3-Q4FY15-NULL

试着加入吧。没有运气。

select s1.empid,s2.qtr,s1.salary from set1 s1 

在s2.qtr = s1.qtr上右连接set2 s2 分组由s1.empid,s2.qtr,s1.salary

组成

1 个答案:

答案 0 :(得分:0)

你想要的右外连接是empid列表的CROSS JOIN(应该在它自己的表中)和四分之一列表。像这样:

areapoint.y_axis

对于每个PAIR(empid,qtr)你想要拿薪水,如果没有薪水,你想要NULL - 这就是右外连接的作用。交叉连接创建了empid和qtr的所有可能组合的集合。