我有一张表格,其中包含SO编号,行项目编号,修订编号和区域等列。
我需要明智地显示修改总数。
我有6个区域 - a,b,c,d,e,f
所以区域a的数字为1,2;区域b为3,4;其他区域同样如此。
在每个数字中,可能有1个或多个行项目编号,如10,20,30等 对于每个这样的数字,只有一个修正案(即,即使这样的数字有很多行项目编号,也只有一个修正案)
现在,在a区说,有4个数字1,2,3,4。并且在数字1中有一个行项目编号10,其修订编号为2.对于如此编号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
对于区域,修改总数为6,区域b为6,c - 0,d - 2,e - 3,f - 3
某个区域可能包含任意数量的号码,因此该号码可能包含任意数量的行项目号码,但是,这样的号码可能只有一个修订号码
我该怎么做?
答案 0 :(得分:0)
我真的不明白你的问题和你的结果。
根据我的理解,这似乎很简单
select zone,
sum(amendment_number)
from tablea
group by zone
现在我的结果将是:9-6-0-2-3-5
你只想要最后一个so_number吗?
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