如何在SQL Server中进行查询以查询接下来5天的所有行。 问题是,它必须是有记录的日子,所以接下来的5天,可能会变成像今天,明天,下个月的某一天等......
基本上我想在数据库中查询下一个非空X天的记录。
该表有一个名为Date的列,这是我想要过滤的。
答案 0 :(得分:0)
为什么不将搜索分成2个查询。第一个搜索日期部分,第二个使用该结果搜索第一个查询返回的日期中的记录。
答案 1 :(得分:0)
试试这个:
DT_CY
答案 2 :(得分:0)
@Anagha很接近,只需稍作修改即可。
SELECT *
FROM TABLE
WHERE DATE IN (
SELECT DISTINCT TOP 5 DATE
FROM TABLE
WHERE DATE >= referenceDate
ORDER BY DATE
)
答案 3 :(得分:0)
您可以使用以下SQL查询,首先获取5个不同的日期,然后显示所选日期的所有行
declare @n int = 5;
select *
from myData
where
datecol in (
SELECT distinct top (@n) cast(datecol as date) as datecol
FROM myData
WHERE datecol >= '20180101'
ORDER BY datecol
)
答案 4 :(得分:0)
如果您的值是日期,则可以使用`dense_rank():
select t.*
from (select t.*, dense_rank() over (order by datecol) as seqnum
from t
where datecol >= cast(getdate() as date)
) t
where seqnum <= 5;
如果列中包含时间组件,并且您仍希望在午夜至午夜之间定义天数(如问题所示),则只需转换为date
:
select t.*
from (select t.*,
dense_rank() over (order by cast(datetimecol as date)) as seqnum
from t
where datetimecol >= cast(getdate() as date)
) t
where seqnum <= 5;