Question

I want to make sum's after each periode ( i want to sum up "Total DKK", "Teus" and "pr. teu")

I have the following 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;

But i get an output like this:

PERIOD     Skibsnavn             Voyage   Total DKK   Teus     Pr. teu  
1301       HANJIN ASIA            0004W     10.00      61       493.29  
1301       HANJIN ASIA                      10.00      61       493.29  
1301       HANJIN ITALY           0010W     60.00      53       510.49  
1301       HANJIN ITALY                     60.00      53       510.49  
1301       HANJIN SPAIN           0009W    100.00      74       526.11  
1301       HANJIN SPAIN                    100.00      74       526.11  
1301                                       170.00     188       511.06  
1302       HANJIN AFRICA          0003W      5.00      87       642.62  
1302       HANJIN AFRICA                     5.00      87       642.62  
1302       HANJIN EUROPE          0004W     40.00     131       473.40  
1302       HANJIN EUROPE                    40.00     131       473.40  
1302       HANJIN KOREA           0014W     70.00      80       617.18  
1302       HANJIN KOREA                     70.00      80       617.18  
1302       HANJIN NETHERLANDS     0010W     60.00      57       778.15  
1302       HANJIN NETHERLANDS               60.00      57       778.15  
1302       HANJIN UNITED KINGDOM  0008W     80.00      83       520.64  
1302       HANJIN UNITED KINGDOM            80.00      83       520.64  
1302                                        255.00    438       581.88 

i would like this output:

 
PERIOD   Skibsnavn               Voyage     Total DKK  Teus     Pr. teu  
1301    HANJIN ASIA              0004W       10.00      61      493.29    
1301    HANJIN ITALY             0010W       60.00      53      510.49   
1301    HANJIN SPAIN             0009W      100.00      74      526.11   
1301                                        170.00     188      511.06  
1302    HANJIN AFRICA            0003W        5.00      87      642.62    
1302    HANJIN EUROPE            0004W       40.00     131      473.40    
1302    HANJIN KOREA             0014W       70.00      80      617.18   
1302    HANJIN NETHERLANDS       0010W       60.00      57      778.15    
1302    HANJIN UNITED KINGDOM    0008W       80.00      83      520.64    
1302                                        255.00     438      581.88

Is that possible?

Était-ce utile?

La solution

Try this:

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;

I've added parentheses around the last two columns in the ROLLUP.

I highly recommend this article by Tim Hall: Cube, Rollup and GROUPING functions

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top