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