我正在尝试创建一个接收Patient表主键的函数。然后,对于该密钥,如果应该找到该患者的所有订单。然后,从该记录集合中,它应该获得所使用的耗材及其数量,并使用Supplies表来计算总成本并返回该值。
我不知道如何获得所有订单以及如何使用它们来获取耗材和数量。我知道我可以通过使用一个简单的select语句来获取它们,但我只是不知道如何在函数中实现它,因为它需要返回一个值。有人有建议吗?我是在SQL中编写代码的新手。我正在使用MS SQL Server。
非常感谢任何帮助。
Patient ---------- PatientNo First, Last, Address OrderTable ---------- OrdNo, Date, PatientNo, Address OrdLineTable ---------- OrdNo, SupplyNo, Quantity SupplyObject ---------- SupplyNo, Price
答案 0 :(得分:1)
我不确定您的问题是关于如何创建函数或查询的样子。我会回答后者。
让我假设您有一个合理的数据结构,其中包含四个表:Patients
(未使用); Operations
(每位患者的手术清单); OperationSupplies
(每项操作的耗材清单);和Supplies
(关于每种供应的信息)。
select coalesce(sum(os.quantity * s.cost), 0) as TotalCost
from Operations o left outer join
OperationSupplies os
on os.OperationId = o.OperationId left outer join
Supplies s
on s.SupplyId = os.SupplyId
where o.PatientId = @PatientId
这是作为函数的结构:
create function xxx (@PatientId int)
returns float
as
begin
declare @val float;
select @val = coalesce(sum(os.quantity * s.cost), 0) as TotalCost
from Operations o left outer join
OperationSupplies os
on os.OperationId = o.OperationId left outer join
Supplies s
on s.SupplyId = os.SupplyId
where o.PatientId = @PatientId;
return(@val);
end;