Sql server 使用SQL Server按区域和按行项目显示AMEDMENT

Sql server 使用SQL Server按区域和按行项目显示AMEDMENT,sql-server,Sql Server,我有一个表格,其中有SO编号、行项目编号、修订编号和区域等列 我需要按区域显示修改的总数 我有6个区域——a、b、c、d、e、f a区的数字是1,2;b区为3,4;其他区域也是如此 在每个so编号中,可能有1个或多个行项目编号,如10、20、30等。 对于每个so编号,只有一个修订(即,即使so编号有多个行项目编号,也只有一个修订) 现在,假设在a区,有4个数字1,2,3,4。so编号1中有一个行项目编号10,其修订号为2。假设so编号2有4个行项目编号10、20、30、40,修订号为0。因此,

我有一个表格,其中有SO编号、行项目编号、修订编号和区域等列

我需要按区域显示修改的总数

我有6个区域——a、b、c、d、e、f

a区的数字是1,2;b区为3,4;其他区域也是如此

在每个so编号中,可能有1个或多个行项目编号,如10、20、30等。
对于每个so编号,只有一个修订(即,即使so编号有多个行项目编号,也只有一个修订)

现在,假设在a区,有4个数字1,2,3,4。so编号1中有一个行项目编号10,其修订号为2。假设so编号2有4个行项目编号10、20、30、40,修订号为0。因此,对于a区,修正总数为2(期望结果)。我该怎么做

Zone     so_number     line_item_number  amendment_number  
a----------        1 ----------------             10 ----------------               2  
a----------        2 ----------------             10 ----------------               0  
a----------        2 ----------------             20 ----------------               0  
a----------        2 ----------------             30 ----------------               0  
a ----------       2 ----------------             40 ----------------               0  
a ----------       3 ----------------             10----------------                1  
a ----------       4 ----------------             10 ----------------               3  
a-----------       4 -----------------            20 ----------------               3  
b -----------      6 ----------------             60 -----------------              6  
c------------      7 ----------------             80 -----------------              0  
c ----------       8 ------------------           10 -----------------              0  
d  ------------    9 -----------------            10 -----------------              2  
e  ------------    10-----------------            20  -----------------             3    
f  ------------    11-----------------             30 -----------------             1  
f -------------    11 ---------------              10 ------------------            1  
f -------------    11 ---------------              20 -------------------           1  
f ------------     12 ----------------             10 ------------------            2
对于a区,修正总数将是6,对于b区,修正总数将是6,对于c-0,对于d-2,e-3,f-3

分区可以有任意数量的so编号,so编号可以有任意数量的行项目编号,但so编号只能有一个修订编号


我该怎么做?

我真的不明白你的问题和结果

从我的理解来看,这似乎很简单

select zone, 
sum(amendment_number) 
from tablea 
group by zone
现在我的结果是:9-6-0-2-3-5

你只想要最后一个so_号码吗

select zone, 
sumamend 
from 
   (select zone, 
   sum(amendment_number) as sumamend, 
   row_number over (partition by zone order by so_number desc) as ord 
   from tablea 
   group by zone, so_number) b
where ord = 1
但我也没有同样的结果:6-6-0-2-3-2

如果我正确理解您的评论,并希望您的示例中包含所有案例,那么您希望得到如下内容:

select zone, 
sum(amendment_number) 
   from (select distinct zone,so_number, amendment_number from #test) p
group by zone

它给出了以下结果:6-6-0-2-3-3

请有人来指导我??有谁能给我指点迷津吗?没有,我要的是结果6 6 0 2 3 3,正如我刚才提到的,按分区计算修正总数。对于so编号,可以只有一个修订,但有多个行项目编号。对于我的示例中的a区,so编号1为2,so编号2为0,so编号3为1,so编号4为3。因此,总数将为2+0+1+3,即6,但如何确定要为总和选择哪一行项目?您是选择较小的行项目还是较大的行项目?例如,so编号4可以是3或3。你有杜布隆吗?对于相同的so编号,修订编号是否始终相同?正如你在你的示例中所展示的,我需要考虑SO数字中的所有行项目。所以这不是所有修正案数字的总和。但是,so编号和非行项目编号的修订编号之和。正如我所说,修正案针对的是so编号,而不是行项目编号。对于一个区域,所有so编号(非行项目编号)的所有修订的总和,你不能使用关键字distinct,因为如果在一个区域中,我们有3个so编号,并且so编号的修订编号相同,那么distinct将给出错误的结果请指导我,我完全迷路了