[英]Next Booking Record with Function and table
现在,我正在尝试在UDF的帮助下为患者寻找下一个可用的预约,因为我不确定是否可以通过其他方式进行。
这是我的UDF:
CREATE FUNCTION [dbo].[fnGetNextBookingForPatient]
(@PatientId BIGINT,
@BookingStartTime SMALLDATETIME)
RETURNS TABLE
AS
RETURN
(SELECT TOP 1
BookingId As NextBookingId,
C.Color As NextBookingCatColor,
C.CategoryName As NextBookingCatName,
b.StartTime As NextBookingTime
FROM
dbo.Booking B
INNER JOIN
Category C ON c.CategoryId = b.CategoryId
WHERE
B.StartTime > @BookingStartTime
AND b.PatientId = @PatientId
AND ISNULL(B.IsCancelled, 0) = 0
AND ISNULL(B.IsDeleted, 0) = 0
ORDER BY
B.StartTime
)
我需要在临时表中获取每个记录的下一个预订信息
当前温度表
PatientId| BookingId | BookingTime
---------+-------------------+---------------------
1235 | 15585 | 2017-02-19 08:00:00
预期温度表
PatientId| BookingId | BookingTime | NextBookingId| NextBookingTime
---------+-----------+--------------------+------------+-----------------
1235 | 15585 | 2017-02-19 08:00:00 | 16522 | 2017-02-23 11:00:00
这是我尝试过的
SELECT
*,
dbo.fnGetNextBookingForPatient(PatientId, @TenantId, StartTime)
FROM
#Temp
ORDER BY
StartTime ASC
我收到一个错误
找不到列“ dbo”或用户定义的函数或聚合“ dbo.fnGetNextBookingForPatient”,或者名称不明确
由于我不熟悉如何使用函数返回多个值,因此我被困在这里。
如何使用OUTER APPLY? 在此处阅读有关使用此功能的更多信息
SELECT
T.*
,NB.NextBookingId
FROM #Temp T
OUTER APPLY
[dbo].fnGetNextBookingForPatient(t.PatientId, @TenantId, T.StartTime) NB
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.