次のデータセットを想定します。
declare
@datesTest table(dateId date, someValue int)
insert into
@datesTest
values
('01/01/2013', 15),
('01/01/2013', 15),
('02/01/2013', 0),
('03/01/2013', 27),
('03/01/2013', 27),
('03/01/2013', 27),
('04/01/2013', 44),
('04/01/2013', 44),
('05/01/2013', 0)
/* data is in this format with about 15 other fields that make distinct at this level not viable */
select
*
from
@datesTest;
/* not the average I want */
select
avg(someValue) incorrectAvg
from
@datesTest;
/* the average I do want (avg of distinct) */
select
avg(_1.someValue) correctAvg
from
(
select distinct
*
from
@datesTest
)_1
また、データセットを変更したり、SQL のフィールドを操作したりすることはできないと仮定します。
Reporting Services から、これらの値を何らかの形で受け入れ、重複を削除してから真の平均を返すカスタム関数を作成したいと考えています。
私が抱えている問題は、SSRS が複数の行をカスタム関数に渡すために使用するオブジェクトの種類がわからないことです。