2014-01-08 50 views
0

我有一個表,其中我有像SO號碼,行項目號碼,修訂號碼和區域列。使用SQL Server的區域明智和行項目明智的顯示使用SQL Server

我需要顯示區域明智的修正總數。

我有6個區 - A,B,C,d,E,F

所以號碼如1,2-對區中;區域b爲3,4;對其他區域也是如此。

在每個這樣的數字中可能有1個或多個行項目號碼,如10,20,30等
每個這樣的數字只會有一個修改(即,即使這樣的數字有很多行物品號碼,它只會有一個修正)

現在,說在區域a,有4個數字1,2,3,4。在第一個數字中有一個項目編號爲10,其修訂編號爲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

請人指導我 – user1416631

+0

?任何人都可以指導我? – user1416631

回答

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

+0

不,我想要結果6 6 0 2 3 3,正如我所提到的那樣,將區域明智修正的總和加起來。對於這樣一個數字,可能只有一個修正,但有很多行項目編號。對於我的例子中的區域a來說,對於數字1來說它是2,對於數字2來說它是0,對於數字3來說它是1,對於數字4來說它是3,所以總數是2 + 0 + 1 + 3,這是6 – user1416631

+0

但是,你如何確定你選擇的是哪一個lineitem?你正在拍攝更小的線條還是更大的?舉例來說,第4號可能是3或3。你有雙倍數?對於同樣的數字,修改號碼總是相同的?就像您在示例 –

+0

中顯示的那樣,我需要考慮所有編號中的所有訂單項。所以它不是所有修正數字的總和。但是,修改數字的總數是這樣一個數字而不是行號。就像我說的,修正是針對一個這樣的數字,而不是針對項目編號。對於一個區域,所有這些數字(不是行項目編號)的所有修改的總和 – user1416631