0

患者テーブルの主キーを受け取る関数を作成しようとしています。次に、そのキーに対して、その患者のすべてのオーダーを検索する必要があります。次に、そのレコードのコレクションから、使用されたサプライ品とその数量を取得し、Supplies テーブルを使用して合計コストを計算し、その値を返します。

すべての注文を取得する方法と、それらを使用して供給品と数量を取得する方法がわかりません。単純なselectステートメントを使用してそれらを取得できることは知っていますが、値を返す必要があるため、これを関数に実装する方法がわかりません。誰かアドバイスはありますか?SQLでコードを書くのは初めてです。MS SQL Server を使用しています。

どんな助けでも大歓迎です。

忍耐強い
----------
患者番号
初め、
最後、
住所


注文表
----------
注文番号、
日にち、
患者番号、
住所

オーダーライン テーブル
----------
注文番号、
サプライNo,
量


サプライオブジェクト
----------
サプライNo,
価格
4

1 に答える 1

1

あなたの質問が関数の作成方法に関するものなのか、クエリがどのように見えるものなのかわかりません。後者についてお答えします。

4 つのテーブルを持つ合理的なデータ構造があると仮定します PatientsOperations(各患者の手術のリスト); 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;
于 2013-04-27T21:41:48.107 に答える