【问题标题】:Select Multiple distinct with Order By Date Clause使用按日期排序子句选择多个不同
【发布时间】:2015-04-14 05:43:11
【问题描述】:

我有一个具有以下结构和数据的 MS-Access 数据库表:

现在我希望结果中的所有列都具有以下条件:

  1. TicketNo 不应在结果中重复
  2. 结果应按日期列排序(EnteredDate

我尝试了一些来自 StackOverflow 的示例以及其他一些来源,但没有得到想要的结果。

我尝试使用:

  1. 关键字 DISTINCTGROUP BYORDER BY(显然在不同的查询中)
  2. MAXMIN 根据一些示例。

请帮助我找到解决方案。 谢谢。

【问题讨论】:

  • 您的尝试有什么问题? 1号和2号?
  • 尝试在 Access 中使用查询向导。它使为新手创建查询变得更加容易
  • @DonDjoe : Word DISTINCTOrder By 子句冲突。
  • @cha :谢谢,但试过了。没有太大帮助。对我来说,多表查询很有帮助。
  • 没有 1。你可以放弃 distinct 并使用 group by 我相信。事实上你可以stackoverflow.com/questions/6734584/…。我只是没有 ms 访问权限来测试它

标签: sql ms-access sql-order-by distinct ms-access-2013


【解决方案1】:

试试这个:

[编辑]

SELECT src.ID, src.TicketNo, src.TicketQuantity, src.TicketRate, src.EnteredDate
FROM (
    SELECT TicketNo, MAX(EnteredDate) AS MaxEnteredDate
    FROM Tickets
    GROUP BY TicketNo
 ) AS mtn INNER JOIN Tickets AS src ON mtn.TicketNo = src.TicketNo AND mtn.MaxEnteredDate = src.EnteredDate
ORDER BY src.EnteredDate DESC

以上查询返回:

ID  TicketNo    TicketQuantity  TicketRate  EnteredDate
6   3000        3               2           2015-01-11 18:27:39
5   3002        6               2           2015-01-11 18:27:31
2   3001        2               2           2015-01-11 18:27:15

【讨论】:

  • 得到这个错误:>由查询定义的选择列表中的别名'TicketNo'引起的循环引用
  • @MahadevMalkar,你确定,你仔细地重写查询吗?请注意,我使用别名作为表名。
  • 我得到了结果,但奇怪的是查询返回了整个表作为结果。与问题中发布的完全相同。
  • 好的,我需要一些时间来重新创建问题。我会尽快发布答案。
  • @MahadevMalkar,完成!子查询的逻辑是错误的。我们需要获取 MAX(EnteredDate) 的 TicketNo ;)
猜你喜欢
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多