首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据多个最大日期列选择整行

如何根据多个最大日期列选择整行
EN

Stack Overflow用户
提问于 2019-06-27 17:50:44
回答 4查看 63关注 0票数 0

我想要选择整行,它已经被最多2个日期列过滤-

因此,如果我有一个表(供应):

代码语言:javascript
复制
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的整行

代码语言:javascript
复制
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使每一行的字段都不匹配。

代码语言:javascript
复制
select max(O_DATE),
MAX(START_DATE),
D_ID,
AMOUNT,
O_ID
FROM SUPPLY
group by
O_ID;
EN

回答 4

Stack Overflow用户

发布于 2019-06-27 18:04:52

下面的查询应该适用于您。对于您的逻辑来说,START_DATE在这两种情况下都是常见的,并且只有START_DATE之间的连接应该可以做到这一点。

代码语言:javascript
复制
SELECT * FROM SUPPLY A
INNER JOIN 
(
    SELECT O_ID,
    MAX(O_DATE) O_DATE,
    MAX(START_DATE) START_DATE
    FROM SUPPLY
    group by O_ID
)B 
ON A.O_ID = B.O_ID
AND A.START_DATE = B.START_DATE
票数 0
EN

Stack Overflow用户

发布于 2019-06-27 18:09:17

这就是您要查找的内容:

代码语言:javascript
复制
select
 t1.D_id, t1.O_id, t2.o_date, t2.Start_date, t1.amount 
from SUPPLY t1
outer apply (
     select O_id, Max(O_date) as o_date, MAX(Start_date) as Start_date from SUPPLY
        group by O_id
) as t2 where t2.O_id = t1.O_id and t2.o_date = t1.O_date and t2.Start_date = t1.Start_date
票数 0
EN

Stack Overflow用户

发布于 2019-06-27 18:10:08

您可以通过将查询连接到表来完成此操作:

代码语言:javascript
复制
SELECT s.* 
FROM SUPPLY s INNER JOIN (
  SELECT 
    max(O_DATE) O_DATE,
    max(START_DATE) START_DATE
  FROM SUPPLY
  GROUP BY O_ID
) g ON g.O_ID = s.O_ID AND g.O_DATE = s.O_DATE AND g.START_DATE = s.START_DATE

或者使用NOT EXISTS:

代码语言:javascript
复制
SELECT s.* 
FROM SUPPLY s 
WHERE NOT EXISTS (
  SELECT 1 FROM SUPPLY
  WHERE O_ID = s.O_ID AND O_DATE > s.O_DATE AND START_DATE > s.START_DATE 
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56788426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档