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個日期字段在主表中。與此有關的問題是,可能只有一段時間不可用。
我現在已經更改了表結構,以便不可用時間段位於它們自己的表中,該表與主表具有一對多的關係。
但現在我無法弄清楚如何讓我的功能來應對新的結構。我基本上需要能夠拉動與父記錄相關的不可用表中的每一行,並且它們遍歷每行,總結不可用性並在最後返回總數。
任何想法?