Sql server 2008 从数据集中删除重复值
我正在使用以下数据集(表1)编制SSRS报告。我是按科目和期间分组的。我的目标是在一个小组内得到总费用和预算。由于每个组的预算数据都是重复的,因此我无法对预算使用SUM()函数。如何删除重复项,使新数据集看起来像这样?(表2)请提供建议。谢谢你抽出时间 表-1Sql server 2008 从数据集中删除重复值,sql-server-2008,tsql,sql-update,Sql Server 2008,Tsql,Sql Update,我正在使用以下数据集(表1)编制SSRS报告。我是按科目和期间分组的。我的目标是在一个小组内得到总费用和预算。由于每个组的预算数据都是重复的,因此我无法对预算使用SUM()函数。如何删除重复项,使新数据集看起来像这样?(表2)请提供建议。谢谢你抽出时间 表-1 ID Account Period Expense Budget 1 100 201301 20 100 2 100 201301 30 100 3 100 201302 10
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 ...................
如果必须在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
如果确实要使重复预算为空,请尝试此更新命令 请检查一下小提琴
祝你好运。如果你把每组的
费用加起来怎么办。。。这样你就可以一直显示每个小组的总费用和总预算了?
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;