SQL选择至少在给定时间内的X行

时间:2009-11-07 11:39:15

标签: sql select

我正在寻找一个SQL查询,它可以准确地从表中选择按日期排序的行。为此,有一个包含时间戳的列。

这里有一个棘手的部分: 它不应该选择超过特定时间的行,但它仍应选择至少X行。 因此,如果在给定时间内不超过X行,则应将时间移回至至少X行。

谢谢!

2 个答案:

答案 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