0

私はテーブルを持っています:

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が変更された場合->関数を実行するかどうかを確認できますか?それ以外の場合は前の値を選択しますか?

4

1 に答える 1

1

これを試してみてください::

    SELECT 
    tt1.ORG as 'Organization', 
    tt1.PONumber as 'PO Number',
    tt1.Code as 'Code',
    tt1.Price as 'Price',
SUM(ROUND(tt1.PricePrice,2,1) as 'SumPrice'

    FROM My_table as tt1 group by tt1.PONumber 
于 2012-07-11T10:04:38.953 に答える