SQL получает записи за последний квартал с 30-дневным льготным периодом - PullRequest
0 голосов
/ 04 октября 2018

Я хочу найти записи компании, которые не делали регистрацию за последний квартал, но я хочу предоставить льготный период в 30 дней.Как и до 30 октября 2018 года, company_seq не должен быть выбран.Я не могу выполнить часть льготного периода.Может кто-нибудь, пожалуйста, помогите мне?

И еще нужно учесть, что если регистрация не была сделана для предыдущего квартала, то есть для второго квартала, то следует выбрать последовательность компании

Образец данных

Company_seq YEAR    QUARTER
1           2018    2
1           2018    3
2            2018   2
2           2018    1
3          2018 1

Company_SEQ COMPANY_NAME    
1           Company 1   
2          Company2 
3           Company3    



SELECT * FROM COMPANY 
WHERE company_seq NOT IN 
    (SELECT DISTINCT company_seq 
        FROM Filing F
        WHERE YEAR = (SELECT TO_CHAR(add_months(sysdate,-3),'YYYY') from dual)
        AND quarter=(SELECT TO_CHAR(add_months(sysdate,-3),'Q') from dual)

Ожидаемый результат запроса:

3, Company3

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Я попробовал приведенный ниже запрос, и он сработал

SELECT * FROM Temp_Company_Neha 
WHERE company_seq NOT IN( 
SELECT DISTINCT company_seq     FROM Temp_Neha dehp 
              WHERE YEAR = (SELECT TO_CHAR(add_months(sysdate,-3),'YYYY') from dual)
              AND quarter=(SELECT TO_CHAR(add_months(sysdate - 30,-3),'Q') from dual));
0 голосов
/ 04 октября 2018

Я думаю примерно так:

select c.company_seq
from company c
group by c.company_seq
having add_months(max(add_months(to_date(year || '0101', 'YYYYMMDD'), 3 * c.quarter)), 1) < sysdate

Внутренний add_months() преобразует год / квартал в начало следующего квартала.Внешний add_months() - это льготный период.

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