首页 > 解决方案 > 从两个表中选择最大日期,同时加入 3 个表

问题描述

我正在使用 Oracle SQL,我正在尝试获取一个用户当前有多少打开和关闭的请求。

我有三张表,一张用于打开的请求,一张用于关闭的请求,一张用于用户详细信息。

我已经加入了三个表,一次是内连接,另一次是左外连接。

但是,我遇到了一个问题,即在两个表(打开的请求和关闭的请求)中仅输出 MAX 日期内的数据。

我已经使用下面的代码来加入表格,你能告诉我如何设置从打开的请求表“O”中获取最大日期和从关闭的请求表“C”中获取最大日期的条件吗?我应该使用“with 子句”吗?我如何在这里使用它?我希望结果是一个三列的表,用户名,他有多少打开的请求,以及他有多少关闭的请求。

SELECT COUNT (O.USER_ID) ,COUNT (C.USER_ID), USER_NAME
FROM USER_OREQ O 
  INNER JOIN USER_DETAILS U ON  O.USER_ID = U.ID 
  INNER JOIN USER_CREQ C ON U.ID = C.USER_ID
GROUP BY USER_NAME
ORDER BY USER_NAME ASC

标签: sqloracle

解决方案


你似乎想要GROUP BY子句MAX()

SELECT USER_NAME, MAX(O.DATE), MAX(C.DATE)
FROM USER_OREQ O INNER JOIN 
     USER_DETAILS U ON  O.USER_ID = U.ID INNER JOIN 
     USER_CREQ C 
     ON U.ID = C.USER_ID
GROUP BY USER_NAME
ORDER BY USER_NAME ASC;

推荐阅读