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

如何根据多个最大列值选择行?
EN

Stack Overflow用户
提问于 2019-06-28 18:00:34
回答 1查看 29关注 0票数 0

我有几个表,我把它们都加入到了“表1”中,因为它有设备IDS。

代码语言:javascript
复制
D_ID | U_ID |
1    |  100 
2    | 101
3    | 102

然后我将其与表2和表3连接起来,这两个表分别包含订单信息和产品细节

表2-

代码语言:javascript
复制
O_id | order_date | D_id
10       | 2018-2-3 |  1
10       | 2019-5-4 |  1
11       | 2017-1-6 |  2
11       | 2019-2-8 |  2
12       | 2018-10-3 |  3

表3-

代码语言:javascript
复制
 P_ID     | START_DATE | END_DATE | D_ID
 20       | 2018-5-3   | 2018-6-3 | 1
 21       | 2019-6-8   | 2019-6-13| 1
 22       | 2017-2-8   | 2017-2-8 | 2
 23       | 2019-4-2   | 2019-5-2 | 2
 24       | 2018-11-1  | 2018-11-3| 3

我的输出应该能够按D_ID分组,并选择具有最大order_date和最大start_date的整行。

预期输出-

代码语言:javascript
复制
D_ID     |U_ID  |O_ID  | ORDER_DATE | START_DATE | END_DATE | P_ID
1        |100   |10    | 2019-5-4   | 2019-6-8   | 2019-6-13 | 21
2        |101   |11    | 2019-2-8   | 2019-4-2   | 2019-5-2  | 23
3        |103   |12    | 2018-10-3  | 2018-11-1  | 2018-11-3 | 24



SELECT T1.D_ID, T1.u_id,
       T2.ORDER_DATE, t2.o_id,
       t3.start_date, t3.end_date, t3.P_ID
FROM t1 left JOIN
     t3
     ON t3.d_id = t1.d_id left JOIN
     t2 ON t2.d_id = t1.d_id
where t2.order_date in (select max(order_date) from t2 group by d_id
                       ) and
      t3.start_date in (select max(start_date) from t3 group by d_id
                       )
group by t1.d_id;

然而,我面临的问题是列值不匹配,它不会占用我同时具有最大订单日期和开始日期的整个行。

EN

回答 1

Stack Overflow用户

发布于 2019-06-28 18:47:26

您需要相关子查询,而不是IN

代码语言:javascript
复制
where t2.order_date = (select max(t2.order_date) 
                       from t2
                       where t2.d_id = t1.d_id
                      ) and
     t3.start_date = (select max(t3.start_date)
                      from t3 
                      where t3.d_id = t1.d_id
                     )

这将获得每个d_id的最大值。您的方法只是列出所有d_id的所有最大值,然后将它们与所有日期进行比较。因此,比较结果可能与不同的d_id匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56804853

复制
相关文章

相似问题

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