Я новичок в этом деле, поэтому прошу помочь: есть таблица в ней 3 столбца: client_id, date, balance
в таблице милионы записей!!! Для каждого client_id задается дата с 01.01.1998 до 01.08.2005 именно в формате первого числа месяца т.е. 01.месяц.год и для каждой даты balance, который может быть любым.
Мне нужно выбрать такие client_id у которых бы баланс в течении последних 36 месяц был одинаковым. Думаю, что нужно использовать массив, встроенный в select, но как правильно оформить синтаксически — не знаю. Помогите написать такой скрипт.
select client_id
from table
where date > add_monthes ( sysdate, -36 )
group by client_id
having count ( distinct balance ) = 1
-- ну или having min ( balance ) = max ( balance )
Здравствуйте, gavrilenko_s, Вы писали:
_>Скажите СУБД.
>>>в течении последних 36 месяц _>В последние 36 месяцев считая от текущей даты или от последней записи по клиенту?
В общем от последней записи по клиенту, т.е. это будет 01.08.2005 Мне нужно списать дебиторско-кредиторскую задолженность абонентов, она списывается после 3х лет бездействия абонента. В четверг нужно их уже списать, чтобы в новый биллинговый период от 01.09.2005 у них в таблице уже был нулевой баланс и я их деактивирую.
Я сама недавно работаю в PL/SQL и Oracle поэтому очень прошу помогите!!!
X>Я сама недавно работаю в PL/SQL и Oracle поэтому очень прошу помогите!!!
понятно.
но вот фраза: Мне нужно выбрать такие client_id у которых бы баланс в течении последних 36 месяц был одинаковым
что значит был одинаковым ?
зы. тут, видимо, нужны некоторые пояснения о том что и как хранится в этом "балансе".
Здравствуйте, xfate, Вы писали:
X>Я сама недавно работаю в PL/SQL и Oracle поэтому очень прошу помогите!!!
Интересно, как вам тогда доверили списание задолженности?
Если биллинг у вас проводится регулярно для всех (как я думаю), то способ, предложенный Softwarer, вполне подойдет (если исправить название функции add_months). Но! Проверять бездействие абонентов по балансу не совсем корректно. Есть ведь бесплатные услуги, бонусы и т.п. Более корректно будет просмотреть начисления и платежи. А то и вообще записи об услугах.