Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带功能和表格的下一个预订记录_Sql_Sql Server_Tsql_Sql Server 2014 - Fatal编程技术网

Sql 带功能和表格的下一个预订记录

Sql 带功能和表格的下一个预订记录,sql,sql-server,tsql,sql-server-2014,Sql,Sql Server,Tsql,Sql Server 2014,现在,我正试图在UDF的帮助下为患者找到下一个可用的预约,因为我不确定我是否能以其他方式做到这一点 这是我的UDF: CREATE FUNCTION [dbo].[fnGetNextBookingForPatient] (@PatientId BIGINT, @BookingStartTime SMALLDATETIME) RETURNS TABLE AS RETURN (SELECT TOP 1 BookingId

现在,我正试图在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
当前温度表

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
预期温度表

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”,或者名称不明确


由于我不熟悉如何使用返回多个值的函数,我被困在这里。

使用外部应用如何?请阅读以了解有关使用此功能的更多信息

    SELECT 
     T.*
        ,NB.NextBookingId
    FROM #Temp T
    OUTER APPLY 
    [dbo].fnGetNextBookingForPatient(t.PatientId, @TenantId, T.StartTime) NB