1

我正在使用以下数据集(表 1)开发 SSRS 报告。我按帐户和期间分组。我的目标是在一个组内获得总费用和预算。因为每个组的预算数据都是重复的,所以我不能对预算使用 SUM() 函数。如何删除重复项,使新数据集看起来像这样?(表2)请指教。感谢您的时间。

表格1

ID Account Period  Expense Budget
1  100     201301  20      100
2  100     201301  30      100
3  100     201302  10      150
4  100     201302  40      150
5  200     ...................

表 2

ID Account Period  Expense Budget
1  100     201301  20      100
2  100     201301  30      NULL
3  100     201302  10      150
4  100     201302  40      NULL
5  200     ...................
4

2 回答 2

1

如果您真的想使重复预算为空,请尝试此更新命令

请检查 sqlfiddle http://sqlfiddle.com/#!3/1e619/11

Update table1 
set budget = null
where id in
(
      select aa.id from
        (
          select id,row_number() 
          over(partition by Budget order by Period) as rno
          from table1
        ) aa
     where rno > 1
);

select * from table1;

祝你好运。

于 2013-02-08T21:09:36.353 回答
1

如果您必须在 SQL 中进行分组,我会使用窗口函数。如果你可以在 SSRS 中做到这一点,只需添加一个“行分组父级”会更好。

对于 SQL,我会这样做:

declare @Temp table ( ID int identity, Account int, period int, expense int, budget int);

insert into @Temp values (100, 201301,  20, 100),(100, 201301,  30, 100),(100, 201302,  10, 150),(100, 201302,  40, 150)

select *
from @Temp

select 
    ID
,   Account
,   Period
,   Expense
,   case when (row_number() over(partition by Budget order by Period) = 1) then Budget end  as Budget-- only shows first occurrence of an order amount ordering by person
from @Temp
于 2013-02-08T20:01:19.283 回答