1
我正在嘗試創建一個SQL以基於日期提取數據,現在有了使用where子句的條件以獲得我真正需要的內容 我有下面的表和TVF:SQL Server - 其中+ TVF/SVF,交叉應用,T-SQL
/* dbo.weeks -> column(weeknum), column(date) **date is all Fridays** */
weeknum date
1 2001-09-21
2 2001-09-28
3 2001-10-05
... ....
/* fnBenchMark(@weeknum) -> display benchmark data based on weeknum */
這裏是我的代碼:
SELECT p.weeknum, p.date, q.companyid, q.index
FROM dbo.Weeks AS p
cross apply
dbo.fnBenchmark(p.weeknum) as q
where date = '2001-09-21'
/* Here is what I wish to add to above code but don't know how to do it */
if
date in dbo.Weeks column (date) --if date on where clause is a Friday and it is on dbo.weeks table
then run above code
else
change date to LastFridayDate --if date on where clause is Sat~Thur, then use previous Friday's date
then run above
例如,假設2001-09-21是週五,如果我在這裏輸入2001年9月24日子句,我希望SQL運行「where date =」2001-09-2 1「since 2001-09-24我輸入的不是星期五」
也許我應該創建另一個函數(SVF?)來返回上一個星期五的日期基於@date我輸入的參數嗎?然後用:
where date = fnFridayCheck(@date I entered)
什麼是'** **日期'??? – Amit
添加類型和或create table語句可能會有所幫助。 – surfmuggle
如果你寫了一個函數來獲得下一個(或之前 - 如果你選擇一個星期三,你想要最後還是下個星期五?)星期五。所以你的'WHERE'子句就像'WHERE [date] = fnFriday('2001-09-24')'。然後,您必須將此函數作爲一個函數輸入1個日期輸入,並使用您的dbo.weeks表輸出也是星期五的最近日期。 – Tingo