【发布时间】:2018-01-08 05:21:05
【问题描述】:
需要结合 group-by 和 right-outer-join。
TableA 有组“a”、“b”、“c”、“d”
TableB 有:12|a, 2|b, 1|a 5|b 3|d 多次。
我将 TableB 分组为这样的组视图:
视图B:13|a 7|b 3|d
如您所见,“c”组不在 TableB 中,也不在 ViewB 中。我需要这样的外部连接:
视图B 13|a 7|b 3|d null|c
我怎样才能做到这一点?
更新。 我明白了,这个简单的例子并没有描述复杂性。 另外我有第三个表“用户” 因此,为每个用户、每个 TableA-Values 分组。 示例
userA| 13| a
userA| 7 | b
userA| 3 | d
userB| 10| a
userB| 70 | b
userB| 30 | d
组“c”不在 TableB 中(TableB 包含组的值) 当我尝试这样的查询时:
select
right outer join TableA
on TableB.id = TableA.id
join TableC
on TableB.other_id = TableC.other_id
group by TableB.groups
我只是得到这样的东西:
null| null| c
userA| 13| a
userA| 7 | b
userA| 3 | d
userB| 10| a
userB| 70 | b
userB| 30 | d
但我需要:
|userA| 13| a
|userA| 7 | b
|userA| 3 | d
|userA| NULL| c
|userB| 10| a
|userB| 70 | b
|userB| 30 | d
|userB| NULL | c
UPDATE_2 抱歉信息少。我使用 oracle g11 这是示例模式的链接:
http://sqlfiddle.com/#!4/71069
应该扩展的我的 Sql-Query 如下所示:
SELECT usr.user_name,
SUM (lg_all.new_values) AS group_sum,
allw.group_name
FROM users usr, products lg_all, myGroup allw
WHERE usr.user_id = lg_all.user_id
AND allw.group_id = lg_all.group_id
GROUP BY (usr.USER_ID, allw.group_name)
ORDER BY usr.LOGONUSER_ID DESC
我的结果如下所示:
userA| 13| a
userA| 7 | b
userA| 3 | d
userB| 10| a
userB| 70 | b
userB| 30 | d
但我需要:
|userA| 13| a
|userA| 7 | b
|userA| 3 | d
|userA| NULL| c
|userB| 10| a
|userB| 70 | b
|userB| 30 | d
|userB| NULL | c
谢谢。
【问题讨论】:
-
你试过正确的加入吗?
标签: sql oracle11g group-by right-join