Sql server 使用SQL Server按区域和按行项目显示AMEDMENT
我有一个表格,其中有SO编号、行项目编号、修订编号和区域等列 我需要按区域显示修改的总数 我有6个区域——a、b、c、d、e、f a区的数字是1,2;b区为3,4;其他区域也是如此 在每个so编号中,可能有1个或多个行项目编号,如10、20、30等。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编号,只有一个修订(即,即使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将给出错误的结果请指导我,我完全迷路了