Sql 带功能和表格的下一个预订记录
现在,我正试图在UDF的帮助下为患者找到下一个可用的预约,因为我不确定我是否能以其他方式做到这一点 这是我的UDF: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
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