Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 从数据集中删除重复值_Sql Server 2008_Tsql_Sql Update - Fatal编程技术网

Sql server 2008 从数据集中删除重复值

Sql 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

我正在使用以下数据集(表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     ...................

如果必须在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;