2014-12-04 248 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')