Необходимо получить данные за предыдущий финансовый год в oracle sql - PullRequest
0 голосов
/ 07 февраля 2020

Как я могу написать SQL, который будет получать данные за прошлый год. например, если я запускаю этот sql сегодня (07-02-2020), поэтому он должен дать мне сумму данных lcy_amt с 01-01-2019 по 31-12-2019;

trn_date      lcy_amount

08-01-2020    200
08-01-2019    100
02-11-2020    150

Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2020

Вы можете использовать следующий запрос:

SELECT SUM(lcy_amount)
FROM yourtable
WHERE trn_date >= TRUNC(SYSDATE, 'YEAR') - INTERVAL '1' YEAR 
  AND trn_date < TRUNC(SYSDATE, 'YEAR') 

Второй запрос в ответе @ nick исключит 31-де c -2019, как и должно быть WHERE trunc(trn_date) ..., иначе trn_date = 31-dec-2019 00:00:01 to 31-dec-2019 23:59:59 будет исключено из результата.

Ура !!

1 голос
/ 07 февраля 2020

Вы можете сравнить YEAR часть trn_date с единицей, меньшей YEAR текущей даты, например,

SELECT SUM(lcy_amount)
FROM yourtable
WHERE EXTRACT(year FROM trn_date) = EXTRACT(year FROM SYSDATE) - 1

. Чтобы разрешить использование индексов, может быть более эффективно: используйте этот запрос. Обратите внимание, что он опирается на значения в trn_date, не имеющие временной составляющей; если они это сделают, то запрос в @ Teja sh будет более подходящим.

SELECT SUM(lcy_amount)
FROM yourtable
WHERE trn_date BETWEEN TRUNC(SYSDATE, 'YEAR') - INTERVAL '1' YEAR AND
       TRUNC(SYSDATE, 'YEAR') - INTERVAL '1' DAY

Демонстрация по SQLFiddle

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