предыдущий триместр в оракуле SQL - PullRequest
1 голос
/ 02 марта 2012

У меня есть следующий sql, который дает мне отчет о том, что досье обрабатывается людьми за последние полные три месяца, но я хотел бы принять его, чтобы я получил его с предыдущего триместра, например, когда я запустил его сейчас, я должен получитьдосье от 10, 11 и 12 месяцев 2011 года и в апреле от 1, 2 и 3 месяца 2012 года. Может кто-нибудь сделать предложение, как справиться с этим самым простым способом.Эти отчеты хранятся в виде sql в базе данных, поэтому они должны быть в состоянии работать в любое время.

select
 pers_nr "person", 
 to_char(import_dt,'YYMM') "year and month",
 count(pers_nr) "dossiers" 
from 
  rdms_3codon
where
 to_char(import_dt,'YY')*12+to_char(import_dt,'MM') > to_char(sysdate,'YY')*12+to_char(sysdate,'MM')-4
 and to_char(import_dt,'YY')*12+to_char(import_dt,'MM') < to_char(sysdate,'YY')*12+to_char(sysdate,'MM')
group by 
 pers_nr, 
 to_char(import_dt,'YYMM') 
order by
 pers_nr

Редактировать:

Здесь запрос дополнен предложением Joachim

select 
 pers_nr "person",  
 to_char(import_dt,'YYMM') "year and month", 
 count(pers_nr) "dossiers"  
from  
  rdms_3codon 
where 
 trunc(import_dt) >= trunc(trunc(sysdate, 'Q') -1, 'Q')
 and trunc(import_dt) < trunc(sysdate, 'Q')-1/(24*60*60)
group by  
 pers_nr,  
 to_char(import_dt,'YYMM')  
order by 
 pers_nr 

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

Это то, что вы ищете?

SELECT TRUNC(TRUNC(SYSDATE, 'Q') -1, 'Q') AS startLastQuarter,
       TRUNC(SYSDATE, 'Q')-1/(24*60*60)   AS endLastQuarter,
       TRUNC(SYSDATE, 'Q')                AS startThisQuarter    
FROM DUAL;

Демо здесь .

0 голосов
/ 07 апреля 2015
SELECT  TRUNC(add_months(SYSDATE,-3*N), 'Q')  FROM DUAL;

Заменить N por el numberro de trimestre que quiere ir atras.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...