我正在使用以下数据集开发SSRS报告(表-1)。我按帐户和期间分组。我的目标是在一个组内获得总费用和预算。由于预算数据是按组重复的,因此我无法对预算使用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 ...................
答案 0 :(得分:1)
如果你必须在SQL中进行分组,我会使用窗口函数。如果你能在SSRS中做到这一点,只需添加一个'Row Grouping Parent',那就更好了。
对于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
答案 1 :(得分: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;
祝你好运。