我需要在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...