複数の値列を持つテーブルがあります。値は整数または NULL にすることができます。例:
LFNR WertA WertB WertC
1 1 1 2
2 100 100 200
3 NULL 1 NULL
5 1 NULL 1
6 0 0 0
40 NULL 1 NULL
各列の NULL ではない上位 3 つの値の平均を取得する必要があります。単一の列について、次のステートメントで目的の平均を取得します。
SELECT AVG(WertA) FROM (SELECT TOP 3 WertA FROM synta_rollmw WHERE WERTA IS NOT NULL ORDER BY lfnr DESC)u
この値を SSRS で使用するには、次のような関数を使用することを考えました。
SELECT dbo.func_avg_Wert(WertA), dbo.func_avg_Wert(WertB), ...
関数のコードは次のとおりです。
CREATE FUNCTION dbo.func_avg_Wert (@col_in varchar(15))
RETURNS int
AS
BEGIN
DECLARE @rollmw int
DECLARE @sqlquery VARCHAR(1000)
SET @sqlquery = ('SELECT AVG(@col_in) FROM (SELECT TOP 3 @col_in FROM synta_rollMW WHERE @col_in IS NOT NULL ORDER BY lfnr DESC)u')
EXEC @sqlquery
RETURN @rollmw
END
GO
しかし、関数を使用しようとすると、「列名 'WertA' が無効です。何が問題なのか、それとももっと良い方法がありますか?ありがとう