1
这是一个开放式的“我应该如何最好地解决这个问题”的问题。我有一个表(dbo.session_dates),它将接收日期(没有时间戳),并且每个日期都是唯一的。没有特定的顺序来输入这些日期。可能会插入2013-11-25,然后是2011-06-07,然后是2012-03-22等 - 但最终它会连续保留大多数周日期,可能会在这里或那里丢失日期。所以你可以画出一张大致连续的日期表,不包括周末日期,也许在这里和那里错过了几个日期。TSQL日期和数字
我希望最终能够及时选择X个“会话”,例如, “向我展示最近20场会议”,这可能会延长200天,100天或20天(或通常约25至30天,周末除外),具体取决于日期的输入方式。
我已经与ROW_NUMBER函数玩耍了,我觉得我可以用临时表(下面的代码)做到这一点,但我似乎仍然涉及选择整个session_dates表到一个临时表:
IF OBJECT_ID('tempdb..#NumsAndDates') IS NOT NULL DROP TABLE #NumsAndDates
IF OBJECT_ID('tempdb..#NumsAndDates') IS NULL
CREATE TABLE #NumsAndDates(session_num int,session_date date);
insert into #NumsAndDates
select
ROW_NUMBER() over (order by session_date desc),
session_date
from dbo.session_dates
order by 2 desc;
select * from #NumsAndDates
where session_num <= 5
order by session_num asc;
这给我所有在临时表中的日期,从中我可以选择我想要的会话数量。
但我敢肯定有一个更好的解决方案...任何想法,将不胜感激
我知道这将涉及一个WITH语句...仍然使用这些新的。谢谢一堆 – user2059532