【问题标题】:Oracle - Return rows with max_date duplicate [closed]Oracle - 返回具有 max_date 重复的行 [关闭]
【发布时间】:2014-07-17 11:02:18
【问题描述】:

我的表结构如下:
car_id number PK, rent_date date, return_date date.

该表非常不一致,我想检索car_id,max(return_date),但前提是 max(return_date) 重复。有可能吗?

例如:

 2    12/12/12  13/12/12
 2    11/12/12  13/12/12

car_id 2 的 return_date 是重复的,因此它应该由查询返回。

谢谢!!

【问题讨论】:

  • 您的问题不清楚。如果 car_id 是 PK,那么一辆车如何有多个条目。以及一辆车如何在不同日期租用但在相同日期归还?
  • 接缝car_id不能是PK!

标签: mysql sql oracle date duplicates


【解决方案1】:
SELECT T.car_id, max(T.return_date) From TableName T
Group by T.car_id, T.return_date
Having COUNT(*) > 1

如果比较不需要日期的时间部分,您可以使用:

在甲骨文中:

SELECT T.car_id, max(T.return_date) From TableName T
Group by T.car_id, TRUNC(T.return_date)
Having COUNT(*) > 1

在 MySql 中:

SELECT T.car_id, max(T.return_date) From TableName T
Group by T.car_id, DATE(T.return_date)
Having COUNT(*) > 1

【讨论】:

  • 对不起这个例子。我尝试了上面的查询,但它似乎返回了重复的行,不管它是否是最大日期。
  • 这是另一个示例:汽车 id 88 返回日期:04/04/11 7:26:18 PM、04/04/11 7:26:18 PM、12/12/07 10:10 :14 AM, 12/12/07 10:01:45 AM, 30/05/2014 07:44:41 AM 正在使用上面的查询检索此 car_id 但它不应该因为 max_date 不重复跨度>
  • 我没有正确理解问题,您可以查看sqlfiddle.com 并填写示例然后给我们链接。
  • sqlfiddle.com/#!2/7d8cd1/10 对于当前查询,它只返回 1 月 7 日的日期,这是正确的。但是,当我使用 oracle 11g 在原始表上运行此查询时,它似乎不起作用。 mysql和oracle在同一个查询中使用count+max有什么区别吗?
  • 不,没有区别,是标准sql。日期的时间部分可能会导致问题。您是否尝试过包含 TRUNC 函数的第二个查询?
猜你喜欢
  • 2020-11-23
  • 2017-02-03
  • 2014-02-14
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
相关资源
最近更新 更多