我正在寻找一个SQL查询,它可以准确地从表中选择按日期排序的行。为此,有一个包含时间戳的列。
这里有一个棘手的部分: 它不应该选择超过特定时间的行,但它仍应选择至少X行。 因此,如果在给定时间内不超过X行,则应将时间移回至至少X行。
谢谢!
答案 0 :(得分:4)
SELECT DISTINCT * FROM
(SELECT TOP 100 *
FROM MyTable
ORDER BY dateColumn DESC) A
UNION
(SELECT *
FROM MyTable
WHERE dateColumn > '20090101')
答案 1 :(得分:0)
我认为你可以通过两列排序来实现这一目标。排序列将是一个表达式,指示行是否在指定的日期范围内。第二个排序列是日期本身
类似
select top x *
from the_table
order by
case when the_table.the_date between '1-jan-2009' and '31-jan-2009' then 0 else 1 end,
the_table.the_date desc