Oracle - 从一个表中的其他记录中选择Sum

时间:2013-03-28 03:52:19

标签: oracle

我的SQL查询有这样的问题:

MyTab1:

   Kode ---- Perkiraan --- Lvl --- GD --- DK --- REFF ---- N1 ------ N2 ----- N3 ----- N4 < / p>
10.000 Group I     1    G   D              0      0     0     0
10.100 test 1      2    G   D    10.000    0      0     0     0
10.101 test 1AA    3    D   D    10.100   10     20    15    15
10.102 test 1BB    3    D   D    10.100   15      5     0    20
10.200 test 2      2    G   D    10.100    0      0     0     0
10.201 test 2AA    2    D   D    10.200   30      0    10    20
10.202 test 2BB    2    D   D    10.200    0     50     3    50
20.000 Group II    1    G   K              0      0     0     0
20.100 test XY     1    G   K    20.000    0      0     0     0
20.101 test XY1    2    D   K    20.100   20     10    50    60
20.102 test XY2    2    D   K    20.100   10     10    50    50
20.200 test II     2    D   K    20.000    5      2     0     3

列N4来自条件:

  

如果DK = D,则N1 + N2 - N3
  如果DK = K,则N1 + N3-N2

在我的情况下,我想用这样的结果进行查询:

   Kode ---- Perkiraan --- Lvl --- GD --- DK --- REFF ---- N1 ------ N2 ----- N3 ----- N4 < / p>
10.000    Group I     1   G   D           55    50     0     0
10.100    test 1      2   G   D   10.000  25    25    15    25
10.101    test 1AA    3   D   D   10.100  10    20    15    15
10.102    test 1BB    3   D   D   10.100  15     5     0    20
10.200    test 2      2   G   D   10.100  30    50    13    67
10.201    test 2AA    2   D   D   10.200  30     0    10    20
10.202    test 2BB    2   D   D   10.200   0    50     3    47
20.000    Group II    1   G   K           35    22   200   223
20.100    test XY     1   G   K   20.000  30    20   100   110
20.101    test XY1    2   D   K   20.100  20    10    50    60
20.102    test XY2    2   D   K   20.100  10    10    50    50
20.200    test II     2   D   K   20.000   5    2      0     3
  1. 标准1:lvl = 2,来自第3级的总和或与REFF列中的值相适应。

  2. 标准2:lvl = 1,来自第2级的总和或与REFF列中的值相适应。

  3. 标准3:lvl = 3,列N2和N3是记录值,或者可能来自查询联接或来自其他表的总和。
  4. 有人可以帮助我.....

2 个答案:

答案 0 :(得分:0)

我不完全理解你的问题,但我会调查

sum (y) over (partition by xx order by z) 

答案 1 :(得分:0)

谢谢先生......

就我而言,我们可以在MyTab1上看到: 我们可以在字段KODE看到,值从10.000到10.102 10.000是最高级别(lvl),10.100是第二级别,10.101是3级别。级别3是详细数据,在我的情况下,级别3是交易数据。

行级别1和2中的

默认值为0(我称之为'G'=常规,请参阅字段GD。'G'常规,'D'是详细信息。)

我想使用顶部的样本进行查询。其中级别(lvl)2的条件公式是公式来自所有级别3和REFF = 10.100 和级别1(来自级别2的总和)的总和。

示例:

Kode   Perkiraan  Lvl  GD   DK REFF     N1     N2    N3    N4    
10.000 Group I     1    G                0      0     0     0
10.100 test 1      2    G   D  10.000    0      0     0     0     
10.101 test 1AA    3    D   D  10.100   10     20    15    15    
10.102 test 1BB    3    D   D  10.100   15      5     0    20
     

我想要这样的结果:

10.100 test 1      2    G   D  10.000   25     25    15    35

N1 = 25 is from 10+15     
N2 = 25 is from 20+5     
N3 = 15 is from 15+0     and      
N4 = 35 is from ( if Field DK = D, N1 + N2 - N3 and if DK = K then N1 + N3 - N2 ).

第1级就是这种情况。

我很难进行查询..

感谢您的关注和最诚挚的问候..

穆利阿迪。
印度尼西亚。