2014-12-04 2 views
1

, являющееся частью Oracle SQL newby У меня есть небольшая головоломка.Суммирование столбца по месяцам

Я хочу суммировать данные за несколько месяцев из столбца «ВЕС». 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

0

Взгляните на документ для trunc formats. Если вы хотите урезать по месяцам:

group by CODE, trunc(START_DATESTAMP, 'MM') 
Смежные вопросы