可以在使用Group By子句的Oracle结果集中组合重复列吗?

时间:2016-08-09 16:28:10

标签: sql oracle oracle11g

我需要在Oracle 11g中编写一个连接以下两个表的查询,计算VAL1列的平均值(基于GROUP BY子句),并返回VAL2列的值(如果存在)。

但是,如果VAL2中存在值,则我提出的查询包含相同JOB_ID的重复行。

以下是表格:

 Table: JOB_BUDGET

  JOB_ID   VAL1    VAL2      JB_DATE
------------------------------------------------ 
   1        11       12      8/8/2016   <--val2 is always the same
   1        12       12      8/8/2016   <--val2 is always the same
   1        10       12      8/8/2016   <--val2 is always the same
   3         1       NULL    8/8/2016
   4        .5       NULL    8/8/2016
   5         3       NULL    8/8/2016


 Table: JOB_GROUP

 GROUP_ID   GROUP_NAME   JOB_ID
----------------------------------- 
   10006         A1          1
   10006         A1          2           
   10007          B          3
   10005          C          4
   10004          D          5  

以下是查询:

SELECT                            
   JG.JG_ID, 
   JG.JG_NAME,   
   round(avg(JB.VAL1), 2),    
   JB.VAL2

FROM 
   JOB_GROUP JG, 
   JOB_BUDGET JB

WHERE                
   JB.job_date = to_date('20160808', 'yyyyMMdd')  AND
   JB.job_id   = JG.job_id                               

 GROUP BY 
   jg.jg_id,
   jg.jg_name, 
   jb.val2

以下是我得到的结果:

JG_ID   JG_NAME  VAL1_AVG   VAL2
 10004     D        3        NULL
 10006    A1       11        NULL
 10006    A1       11         12
 etc...

在结果的第二和第三行中,VAL1_AVG重复。

可以更改查询以将这两行合并为一行吗?

这是我想看到的(单个jg_id / jg_name组合的多行已合并在一行中):

JG_ID   JG_NAME  VAL1_AVG   VAL2
 10004     D        3        NULL
 10006    A1       11         12   
 etc...

0 个答案:

没有答案