【发布时间】:2018-09-13 21:41:45
【问题描述】:
我有以下表格:
表一:
etu | nr |
1 2
2 2
2 3
2 1
3 4
3 9
表 A:
etu | rsp | nr
2 8 2
2 7 3
2 3 1
3 2 4
3 6 9
现在我想要的结果表是
etu | nr | rsp
2.. 3 7
3.. 9 6
所以 etu 和 nr 链接在一起,如果有多个相等的 etu 条目可用,则仅采用具有最高 nr 的条目,并将 rsp 值添加到结果表中。此外,如果表 I 中有更多可用的 etu 条目,则将 .. 添加到 etu 值中。
说明:对于 3 9 6 行:表 I 的最后一行是 3 9,所以 3 是要查找的数字,9 是这 3 行的最大数字。因此,我们将其添加并为其添加 rsp 值( 6 ),然后将其添加到结果表中。对于第 2 行,它是相同的 2 3 是表 I 中最高的 2 行。
我得到了类似的东西:
select x.etu, x.rsp, y.nr from(
select i.etu etu, max(i.nr) maxnr, a.rsp from i left join a on
i.etu=a.etu and i.nr=a.nr group by etu)t
inner join a x on x.etu=t.etu and x.nr=t.nr inner join y on y.etu=t.etu
and y.nr=t.nr
或
select i.etu, max(i.nr) a.rsp from i left join a on i.etu=a.etu and
i.nr=a.nr grounp by
甚至没有让我接近得到我想要的结果,当得到正确的结果时,在 etu 之后添加 ..。
系统为DB10.5 Windows。
提前感谢您的所有帮助。
维京人
【问题讨论】:
-
您需要处理描述。这两个表与问题有什么关系?输出的逻辑没有意义。当
nr中的数据没有“9”行时,“9”如何出现在nr列? -
您是否打算交换
rsp和nr值,或者这是一个错字? -
错字我更正
标签: sql group-by db2 subquery max