2014-12-04 255 views
1

是一個Oracle SQL newby我有一個小難題。按月總結一個列

我想從「WEIGHT」列中總結一個月的數據。 START_DATESTAMP最初採用這種格式'01/01/1900 00:00:00',我發現使用'trunc'會刪除時間組件。

所以,下面的查詢返回每天累計重量但我想回到每月累計重量。有任何想法嗎?

SELECT 
CODE, trunc(START_DATESTAMP), sum(WEIGHT) as TOTAL_WEIGHT 

FROM TP.LOADING Tbl 

where CODE like 'ALM' 
and trunc(START_DATESTAMP) >= to_date('01/11/2014', 'DD/MM/YYYY') 
and trunc(START_DATESTAMP) < to_date('01/12/2014', 'DD/MM/YYYY') 

group by CODE, trunc(START_DATESTAMP) 

ORDER BY CODE asc, trunc(START_DATESTAMP) asc 

回答

1

你可以嘗試像以下:

SELECT CODE, to_char(START_DATESTAMP, 'YYYY/MM') as MONTH, sum(WEIGHT) as TOTAL_WEIGHT 
FROM LOADING Tbl 
where CODE like 'ALM' 
    and trunc(START_DATESTAMP) >= to_date('01/01/2014', 'DD/MM/YYYY') 
    and trunc(START_DATESTAMP) < to_date('01/12/2014', 'DD/MM/YYYY') 
group by CODE, to_char(START_DATESTAMP, 'YYYY/MM') 
ORDER BY CODE asc, MONTH asc 

相應地調整你的約會檢查。你不會說在不同年份你想要做幾個月 - 但你可以轉換成一個純粹的月份字符串,或者可能使用EXTRACT函數僅僅數字月份。

+0

這樣做。感謝那。 – adam 2014-12-04 03:24:12

0

看看trunc formats的文檔。如果你想按月截斷:

group by CODE, trunc(START_DATESTAMP, 'MM')