【问题标题】:select max dates from two tables, while joining 3 tables从两个表中选择最大日期,同时加入 3 个表
【发布时间】:2018-09-05 11:09:17
【问题描述】:

我正在使用 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

【问题讨论】:

  • 您能否提供具有预期输出/结果的示例模式?正如@a_horse_with_no_name 所提到的,指示正在使用的环境将很有帮助,因为并非所有数据库都使用完全相同的语法。
  • 我正在使用 Oracle SQL,我希望结果是一个包含三列的表。用户名,打开的请求数,关闭的请求数。
  • 我看不出最大日期的请求与用户有多少打开和关闭的问题有什么关系。样本数据和期望的结果肯定会有所帮助。
  • @GordonLinoff 我想知道用户在最近日期有多少打开和关闭的请求。每天,都会打开一些请求并分配给用户。例如,最近的日期是昨天,我想知道用户昨天有多少打开和关闭的请求。

标签: sql oracle


【解决方案1】:

您似乎想要带有MAX()GROUP BY 子句:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2013-05-07
    • 2018-11-18
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多