【发布时间】:2017-01-12 19:02:14
【问题描述】:
我想知道是否有人可以帮助我。我想写一个查询来标识汽车的制造商和型号,如果该特定制造商/型号组合之前没有售出,则当天仅售出 1 个
假设我有一个名为 carsSold 的表,它有 4 列:ID、制造商、型号和 dateCreated,并具有以下数据:
我想要做的只是返回在当天创建条目的制造商和型号行,并且只有 1 种类型的组合(从历史上的任何日期开始)。如果我的数据集中的 currentDate 是 08-08-2016,我希望看到 id 的 1、2、4 和 7。
有可能做到这一切吗?从 select 语句中可以实现很多目标。我认为它会开始类似于下面的内容,只是它将包含两行制造商和型号的不同和计数或类似的东西?我只是不确定如何实现我所需要的。
select *
from carsSold
where dateCreated > trunc(sysdate)
提前感谢您抽出宝贵时间查看此内容以及我可能获得的任何帮助。
【问题讨论】:
-
这还不清楚。您是在过去某个日期(例如 08-08-2016)运行此“截止日期”,还是仅在当天(今天)运行此“截止日期”?如果您想在过去的某个日期运行它,也许您将在运行查询时输入它,那么不应该引用“当前”或
sysdate。我很困惑。 -
@mathguy 我的解决方案不关心它是否在当前日期运行。假设它可以在任何日期运行更安全。但是,是的,我知道“所有日期”与“某个日期之前的所有日期”之间的区别。
-
@shawnt - 这是不正确的。除了需要在您的解决方案中将
sysdate更改为“一些”输入日期(这并不困难)之外,您还需要进行一些其他更改 - 如果表中有 LATER 条目,count()条件可能会失败。 (也不难,例如使用where子句 - 但对于更一般的问题,您的解决方案原样不起作用。) -
@mathguy 我知道你来自哪里,我之前不得不向人们解释过。我确实尝试编写无论以后要添加的数据如何都可以工作的查询,并澄清这一点。这次似乎更容易回答提出的问题。