0

次のような SQL クエリに問題があります。

MyTab1:

コード ---- パーキラーン --- Lvl --- GD --- DK --- REFF ---- N1 ------ N2 -----N3 ----- N4

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

私の場合、次のような結果でクエリを作成したい:

コード ---- パーキラーン --- Lvl --- GD --- DK --- REFF ---- N1 ------ N2 -----N3 ----- N4

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: レベル = 2、レベル 3 の合計値、または REFF 列の値と適切な値。

  2. 基準 2: レベル = 1、レベル 2 の合計値または REFF 列の値との適切な値。

  3. 基準 3: lvl = 3、列 N2 および N3 がレコード値であるか、クエリ結合または他のテーブルからの合計である可能性があります。

誰かが私を助けてください.....

4

2 に答える 2

0

ありがとうございます。

私の場合、MyTab1 で確認できます。フィールド KODE で確認できます。10.000 から 10.102 までの値です。10.000 がトップ レベル (レベル)、10.100 が 2 番目のレベル、10.101 が 3 レベルです。レベル 3 は詳細データで、私の場合、レベル 3 はトランザクション データです。

行レベル 1 および 2 のデフォルト値は 0 です (私は 'G' = General と呼びます。フィールド GD を参照してください。'G' General および 'D' は Detail です)。

上のサンプルのような結果のクエリを作りたいです。ここで、レベル (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もそうでした。

クエリを作成するのが難しい..

ご関心をお寄せいただきありがとうございます。

ムリヤディ。
インドネシア。

于 2013-04-01T03:09:27.267 に答える
0

私はあなたの質問を完全には理解していませんが、調べてみます

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

于 2013-03-31T20:04:10.707 に答える