【发布时间】:2019-06-27 09:50:43
【问题描述】:
我想选择整行,它已被 2 个最大日期列过滤-
所以如果我有一张桌子(供应):
D_id |O_id | O_date | Start_date| amount
400 |1 | 2018-2-7 | 2018-4-7 | 500
401 |1 | 2019-8-2 | 2019-10-1 | 1500
402 |1 | 2019-8-2 | 2019-12-7 | 200
403 |2 | 2016-4-10 | 2016-5-7 | 100
404 |2 | 2018-12-1 | 2018-12-17| 50
405 |2 | 2018-12-1 | 2019-1-1 | 2500
因此,输出应按 d_id 分组并显示具有最大 O_date 和最大 start_date 的整行
D_id |O_id | O_date | Start_date | amount |
402 |1 | 2019-8-2 | 2019-12-7 | 200
405 |2 | 2018-12-1 | 2019-1-1 | 2500
我一直面临的问题只是使用 max 和 group by 条件,SQL 不匹配每一行的字段。
select max(O_DATE),
MAX(START_DATE),
D_ID,
AMOUNT,
O_ID
FROM SUPPLY
group by
O_ID;
【问题讨论】:
-
样本数据不佳。为最大 O_date 和最大 start_date 值添加一个具有不同行的 O_id。 (并相应地调整结果。)
-
如果最大 O_date 和最大 start_date 属于 2 个单独的行怎么办?而且您的意思一定是 GROUP BY o_id 而不是 d_id - 对吧?
-
是否存在 max o_date 可能没有 max start_date 的情况(反之亦然)
-
GROUP BY d_id 会将所有 5 行视为 5 个不同的 GROUP。
-
是的,查询应该返回具有最大 o_date 和最大 start_date 的整行,有时对于每个 o_id 的 o_date 将是相同的,在这些情况下我们选择具有最大 start_date 的行.