私はテーブルを持っています:
ORG | PONumber | コード| 価格
このテーブルからすべてのデータを選択し、次のように各PONumberのコード価格の合計を計算します。
SELECT
tt1.ORG as 'Organization',
tt1.PONumber as 'PO Number',
tt1.Code as 'Code',
tt1.Price as 'Price',
'SumPrice' = FUNC001(tt1.PONumber)
FROM My_table as tt1
この手順では、関数FUNC001(tt1.PONumber)を使用しています。
ALTER FUNCTION [dbo].[FUNC001] (@ponumber VARCHAR(MAX))
RETURNS DECIMAL AS BEGIN
DECLARE @p1 DECIMAL ;
SET @p1 = 0.0 ;
SELECT @p1 = @p1 + tt1.Price
FROM My_table as tt1
WHERE tt1.[PO number] = @ponumber
RETURN ROUND(@p1,2,1)
END
問題は次のとおりです。私のSELECTクエリの実行により、この関数は同じPONumberに対して毎回価格の合計を返し、多くの時間がかかります。クエリ内のPONumberごとにこの関数を1回だけ実行し、同じPONumberに戻り値を適用する方法はありますか?@parameterを使用して、PONumberが変更された場合->関数を実行するかどうかを確認できますか?それ以外の場合は前の値を選択しますか?