0
私は、待機時間の締め切り日を短縮するために患者が利用できない日数を計算するために使用する関数を持っています。次のように複数のレコードで動作するようにSQL Server関数を変更する
機能は次のとおりです。
CREATE FUNCTION [dbo].[GetDaysUnavailable]
(
@intRef int
)
RETURNS int
AS
BEGIN
DECLARE @ReturnValue int
DECLARE @dtUnavailFrom datetime
DECLARE @dtUnavailTo datetime
DECLARE @dtRefRcvd datetime
SELECT @dtUnavailFrom = UnavailableFrom FROM Referrals WHERE ReferralID = @intRef
SELECT @dtUnavailTo = UnavailableTo FROM Referrals WHERE ReferralID = @intRef
SELECT @dtRefRcvd = ReferralReceivedDate FROM Referrals WHERE ReferralID = @intRef
IF ISNULL(@dtUnavailFrom,'') = '' OR ISNULL(@dtUnavailTo,'') = ''
BEGIN
SELECT @ReturnValue = 0
END
ELSE
BEGIN
IF @dtRefRcvd > @dtUnavailFrom
BEGIN
SELECT @ReturnValue = DATEDIFF(day,@dtRefRcvd, @dtUnavailTo)
END
ELSE
BEGIN
SELECT @ReturnValue = DATEDIFF(day,@dtUnavailFrom, @dtUnavailTo)
END
END
RETURN @ReturnValue
END
あなたは、それは人が使用できなくされた日付と、彼らはから利用できない日やその紹介を受けた日のいずれかの違いをうまくいく見ることができるように。これは、2つの日付フィールドがメインテーブルにあった私の元の構造を使用しても問題ありませんでした。この問題は、利用不可能期間が1つしかないということでした。
これで、使用不可期間がメインテーブルと1対多の関係にある独自のテーブルになるように、テーブル構造を変更しました。
しかし、今私は新しい構造に対処するために私の機能をどうやって得るのか分かりません。私は基本的に、親レコードに関連する利用不可能なテーブルの各行を引き出し、各行をループして、利用不可能を合計し、最後に合計を戻す必要があります。
アイデア?