2016-11-03 3 views
0

Я просто пытаюсь получить прокатки 12 месяцев в Netezza и я не могу найти какой-либо хорошее решение до сих пор ..как получить прокатки последние 5 месяцев в Netezza

Contract  SpendDate  Expenses 
    sfd6s  2016205  8765 
    axy12  2016206  1320 
    axy12  2016307  12980 
    axy12  2016308  1260 
    axy12  2016309  1200 
    rhg65  2016410  7800 
    fdhju  2016411  300 

вот как мой вид запроса, как:

select contract, spendDate, expenses 
from myTable 

здесь трюк, формат spendDate, как это:

Year + Quarter + Month 

поэтому среднее число после год - это квартал, который равен 1, 2, 3 или 4. Таким образом, по моему запросу, я хочу сказать, что это дает 12 месяцев с сегодняшнего дня. Пожалуйста помоги.
здесь мои желаемые результаты:

Contract  SpendDate  Expenses 
    axy12  2016206  1320 
    axy12  2016307  12980 
    axy12  2016308  1260 
    axy12  2016309  1200 
    rhg65  2016410  7800 
+0

Каков ваш ожидаемый выход? –

+0

Будьте в курсе того, что вы ожидаете ... speicify sample input и желаемый результат. – Teja

+0

Я обновил свой вопрос и добавил желаемые результаты. Я просто хочу получить последние 5 месяцев. см. обновленные вопросы. спасибо – moe

ответ

0

Вы можете использовать TO_DATE, чтобы превратить ваш spendDate в нормальную дату, а затем нормальная дата математике на нем.

select contract, spendDate, expenses 
from mytable 
where to_date(spendDate,'YYYYQMM') 
    between add_months(date_trunc('month',current_date),-5) 
    and add_months(date_trunc('month',current_date),-1) 
order by spendDate 
; 

CONTRACT | SPENDDATE | EXPENSES 
----------+-----------+---------- 
axy12 | 2016206 |  1320 
axy12 | 2016307 | 12980 
axy12 | 2016308 |  1260 
axy12 | 2016309 |  1200 
rhg65 | 2016410 |  7800 
(5 rows) 
+0

@moe делает это решение делать то, что вы хотите? – ScottMcG