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;

我在最后两列周围添加了括号ROLLUP

我强烈推荐 Tim Hall 的这篇文章:Cube、Rollup 和 GROUPING 函数

于 2013-10-31T13:34:14.540 回答