Wie bekomme ich eine Auflistung von datasätzen in einer Tabelle innerhalb einer function?

Ich versuche, eine function zu erstellen, die einen Primärschlüssel zur Patiententabelle einnimmt. Dann für diesen Schlüssel, wenn alle Aufträge für diesen Patienten finden sollten. Dann, aus dieser Sammlung von datasätzen sollte es die Lieferungen verwendet und ihre Mengen und verwenden Sie die Supplies-Tabelle, um die Gesamtkosten zu berechnen und diesen Wert zurückzugeben.

Ich bin nicht sicher, wie man alle Aufträge bekommen und wie man sie benutzt, um die Vorräte und Mengen zu bekommen. Ich weiß, dass ich sie mit einer einfachen select-statement bekommen kann, aber ich weiß einfach nicht, wie man das in einer function implementiert, weil es einen Wert zurückgeben muss. Hat jemand einen Rat? Ich bin neu, um Code in SQL zu schreiben. Ich verwende MS SQL server.

Jede Hilfe wird sehr geschätzt.

 Geduldig
 ----------
 Patient Nr
 Zuerst,
 Letzte,
 Adresse


 OrderTable
 ----------
 OrdNo,
 date,
 PatientNein,
 Adresse

 OrdLineTable
 ----------
 OrdNo,
 VersorgungNein,
 Anzahl


 VersorgungObject
 ----------
 VersorgungNein,
 Preis

Ich bin mir nicht sicher, ob es darum geht, eine function zu erstellen oder wie die Abfrage aussieht. Ich werde dem letzteren antworten.

Lassen Sie mich davon ausgehen, dass Sie eine vernünftige datastruktur mit vier Tabellen haben: Patients (die nicht verwendet wird); Operations (eine list der Operationen für jeden Patienten); OperationSupplies (eine list der Lieferungen für jede Operation); und Supplies (Informationen über jede Lieferung).

 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 

Hier ist die Struktur als function:

 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;