私はTSQL関数を持っています(私はSQL構文に強くありません)が呼び出されたときに週末を削除します:
ALTER FUNCTION dbo.fn_WorkDays (@StartDate AS DATETIME, @EndDate AS DATETIME)
--Define the output data type.
RETURNS INT
AS
--Calculate the RETURN of the function.
BEGIN
RETURN (
SELECT
(DATEDIFF(dd,@StartDate, @EndDate)+1)--Start with total number of days including weekends +1 Includes the day run
-(DATEDIFF(wk,@StartDate, @EndDate)*2)--Subtact 2 days for each full weekend
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' --If StartDate is a Sunday, Subtract 1
THEN 1
ELSE 0
END)
-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday'--If EndDate is a Saturday, Subtract 1
THEN 1
ELSE 0
END))
END
ただし、次のようなコードを使用してテーブルから取得できる既存の銀行休業日も削除したいと思います。
SELECT COUNT([Date])
FROM [InvoiceManagement].[dbo].[tblBankHolidays]
WHERE [Date] BETWEEN '2006-04-14' AND '2006-05-29'--eventually replace dates with @StartDate, @EndDate
INT を返す前に結果から既存のバンク ホールを差し引くように、上記の選択を関数にステッチすることは可能ですか? もしそうなら、私はTSQLに強くないので、その方法についてウォークスルーしていただければ幸いです