1

各ピリオドの後に合計を作成したい (「Total DKK」、「Teus」、「pr. teu」を合計したい)

私は次のSQLを持っています:

SELECT "STAT$DAN_2013".PERIOD, "STAT$DAN_2013".VESSEL_NAME AS "Skibsnavn", "STAT$DAN_2013".VOYAGE_NO AS "Voyage", SUM("STAT$DAN_2013".CREDIT_AMOUNT) - SUM("STAT$DAN_2013".DEBET_AMOUNT) AS "Total DKK", SUM("STAT$DAN_2013".TEUS) AS "Teus", (SUM("STAT$DAN_2013".CREDIT_AMOUNT) - SUM("STAT$DAN_2013".DEBET_AMOUNT)) / SUM("STAT$DAN_2013".TEUS) AS "Pr. teu"
FROM SCAN."STAT$DAN_2013" "STAT$DAN_2013"
WHERE "STAT$DAN_2013".DEPARTMENT=107 AND "STAT$DAN_2013".PERIOD<1307
GROUP BY rollup("STAT$DAN_2013".PERIOD, "STAT$DAN_2013".VESSEL_NAME, "STAT$DAN_2013".VOYAGE_NO)
ORDER BY "STAT$DAN_2013".PERIOD, "STAT$DAN_2013".VESSEL_NAME, "STAT$DAN_2013".VOYAGE_NO;

しかし、次のような出力が得られます。

期間 Skibsnavn Voyage Total DKK Teus Pr. テウ  
1301 韓進アジア 0004W 10.00 61 493.29  
1301 韓進アジア 10.00 61 493.29  
1301 ハンジン イタリア 0010W 60.00 53 510.49  
1301 韓進 イタリア 60.00 53 510.49  
1301 韓進 スペイン 0009W 100.00 74 526.11  
1301 韓進 スペイン 100.00 74 526.11  
1301 170.00 188 511.06  
1302 ハンジン アフリカ 0003W 5.00 87 642.62  
1302 韓進アフリカ 5.00 87 642.62  
1302 韓進ヨーロッパ 0004W 40.00 131 473.40  
1302 韓進ヨーロッパ 40.00 131 473.40  
1302 ハンジン コリア 0014W 70.00 80 617.18  
1302 韓進 韓国 70.00 80 617.18  
1302 韓進オランダ 0010W 60.00 57 778.15  
1302 韓進 オランダ 60.00 57 778.15  
1302 韓進 イギリス 0008W 80.00 83 520.64  
1302 韓進 イギリス 80.00 83 520.64  
1302 255.00 438 581.88

私はこの出力が欲しい:

 
期間 Skibsnavn Voyage Total DKK Teus Pr. テウ  
1301 韓進アジア 0004W 10.00 61 493.29    
1301 ハンジン イタリア 0010W 60.00 53 510.49   
1301 韓進 スペイン 0009W 100.00 74 526.11   
1301 170.00 188 511.06  
1302 ハンジン アフリカ 0003W 5.00 87 642.62    
1302 韓進ヨーロッパ 0004W 40.00 131 473.40    
1302 ハンジン コリア 0014W 70.00 80 617.18   
1302 韓進オランダ 0010W 60.00 57 778.15    
1302 韓進 イギリス 0008W 80.00 83 520.64    
1302 255.00 438 581.88

それは可能ですか?

4

1 に答える 1

2

これを試して:

SELECT "STAT$DAN_2013".PERIOD, "STAT$DAN_2013".VESSEL_NAME AS "Skibsnavn", "STAT$DAN_2013".VOYAGE_NO AS "Voyage", SUM("STAT$DAN_2013".CREDIT_AMOUNT) - SUM("STAT$DAN_2013".DEBET_AMOUNT) AS "Total DKK", SUM("STAT$DAN_2013".TEUS) AS "Teus", (SUM("STAT$DAN_2013".CREDIT_AMOUNT) - SUM("STAT$DAN_2013".DEBET_AMOUNT)) / SUM("STAT$DAN_2013".TEUS) AS "Pr. teu"
FROM SCAN."STAT$DAN_2013" "STAT$DAN_2013"
WHERE "STAT$DAN_2013".DEPARTMENT=107 AND "STAT$DAN_2013".PERIOD<1307
GROUP BY rollup("STAT$DAN_2013".PERIOD, ("STAT$DAN_2013".VESSEL_NAME, "STAT$DAN_2013".VOYAGE_NO))
ORDER BY "STAT$DAN_2013".PERIOD, "STAT$DAN_2013".VESSEL_NAME, "STAT$DAN_2013".VOYAGE_NO;

の最後の 2 つの列を括弧で囲みましたROLLUP

Tim Hall によるこの記事を強くお勧めします: Cube, Rollup and GROUPING functions

于 2013-10-31T13:34:14.540 に答える