【发布时间】:2012-05-21 01:03:02
【问题描述】:
我有一个包含三个日期字段的表格:开始日期、中期日期和结束日期。我想创建一个查询以从表中获取最新活动。本例中的活动是更新日期字段的时间。
无需编写 3 个单独的查询然后组合我的代码中的值来获取 10 个最近的活动,我可以在一个查询中执行此操作吗?所以现在我有
SELECT TOP 10 * FROM core_table
ORDER BY [start_date] Desc
SELECT TOP 10 * FROM core_table
ORDER BY [process_date] Desc
SELECT TOP 10 * FROM core_table
ORDER BY [archive_date] Desc
所以我想将这三个查询的结果汇总在一起,以获得基于所有三个日期的前 10 个条目。
【问题讨论】:
-
我认为获得每一行的第一行,而不是行的集合,但无论如何都有帮助。谢谢!
-
我认为该帖子中 Sven 的解决方案应该对您有用,因为它有效地计算了每一行的最大日期。然后,您可以对此计算列进行排序和过滤: SELECT [other fields,] (SELECT Max(v) FROM (VALUES (date1),(date2),(date3),...) AS value(v)) as [ MaxDate],来自 [YourTable]
-
@Mike - 谢谢,我得到了我需要的答案。如果人们认为这是重复的,我可以关闭它,得到我需要的!
标签: sql sql-server select sql-order-by