繁体   English   中英

具有功能和表格的下一个预订记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM