массив в select
От: xfate  
Дата: 28.08.05 13:49
Оценка:
массив в select

Я новичок в этом деле, поэтому прошу помочь: есть таблица в ней 3 столбца: client_id, date, balance
в таблице милионы записей!!! Для каждого client_id задается дата с 01.01.1998 до 01.08.2005 именно в формате первого числа месяца т.е. 01.месяц.год и для каждой даты balance, который может быть любым.
Мне нужно выбрать такие client_id у которых бы баланс в течении последних 36 месяц был одинаковым. Думаю, что нужно использовать массив, встроенный в select, но как правильно оформить синтаксически — не знаю. Помогите написать такой скрипт.
Re: массив в select
От: Softwarer http://softwarer.ru
Дата: 28.08.05 13:54
Оценка:
Здравствуйте, xfate, Вы писали:

Что-то типа

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 )
Re: массив в select
От: gavrilenko_s  
Дата: 28.08.05 13:56
Оценка:
Скажите СУБД.

>>в течении последних 36 месяц

В последние 36 месяцев считая от текущей даты или от последней записи по клиенту?
Re[2]: массив в select
От: xfate  
Дата: 28.08.05 14:10
Оценка:
Здравствуйте, gavrilenko_s, Вы писали:

_>Скажите СУБД.


>>>в течении последних 36 месяц

_>В последние 36 месяцев считая от текущей даты или от последней записи по клиенту?

В общем от последней записи по клиенту, т.е. это будет 01.08.2005 Мне нужно списать дебиторско-кредиторскую задолженность абонентов, она списывается после 3х лет бездействия абонента. В четверг нужно их уже списать, чтобы в новый биллинговый период от 01.09.2005 у них в таблице уже был нулевой баланс и я их деактивирую.
Я сама недавно работаю в PL/SQL и Oracle поэтому очень прошу помогите!!!
Re[3]: массив в select
От: Callisto  
Дата: 28.08.05 23:29
Оценка:
X>Я сама недавно работаю в PL/SQL и Oracle поэтому очень прошу помогите!!!

понятно.
но вот фраза: Мне нужно выбрать такие client_id у которых бы баланс в течении последних 36 месяц был одинаковым
что значит был одинаковым ?
зы. тут, видимо, нужны некоторые пояснения о том что и как хранится в этом "балансе".
Re[3]: массив в select
От: wildwind Россия  
Дата: 29.08.05 07:46
Оценка:
Здравствуйте, xfate, Вы писали:

X>Я сама недавно работаю в PL/SQL и Oracle поэтому очень прошу помогите!!!

Интересно, как вам тогда доверили списание задолженности?

Если биллинг у вас проводится регулярно для всех (как я думаю), то способ, предложенный Softwarer, вполне подойдет (если исправить название функции add_months). Но! Проверять бездействие абонентов по балансу не совсем корректно. Есть ведь бесплатные услуги, бонусы и т.п. Более корректно будет просмотреть начисления и платежи. А то и вообще записи об услугах.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.