Поиск отсутствующих данных по нескольким условиям. MSSQL 2008 R2
Здравствуйте уважаемые знатоки.
Возникла задача, но не совсем пока понимаю с какой стороны к ней подойти. Есть БД, которая содержит в себе данные за последние сутки. В этой БД есть информация по совершенной операции и клиенте, который ее проводил.(т.е. один клиент может проводить сколько угодно операций/транзакций) Как следует подойти к процессу сбора статистики, если есть несколько условий, которые надо выполнить, а именно: 1. сканируется таблица clients, где присутствуют 4 значения имя клиента ID клиента Порог срабатывания по имеющимся данным(т.е. если установлено 40, то в случае если операций было выполнено меньше 40 или ни одной, то нас этот клиент интересует) статус мониторинга(True - мониторим, False - не мониторим) 2. идет обращение к таблице out_trn в которой происходит поиск транзакций к примеру за час, поиск осуществляется по клиентам(их ID) из п.1, у кого статус мониторинга = TRUE. 3. По выбранным клиентам(за кем осуществляется мониторинг), собранная статистика собирается в таблицу monitor_table Если по клиенту порог срабатывания 3.../...7 операции, а у клиента их нет(т.е. 0 или же ниже порога), надо создать запись в monitor_table столбец 1 | столбец 2 КлиентААА | транзакций нет КлиентБББ | 6 транзакций В случае с поиском существующих значений, проблем нет, но вот поиск отсутствующих значений и преобразование пустоты(отсутствия результата в некую строку) есть проблемы ввиду не достаточных познаний. Написал пробный вариант, чтобы посмотреть на результат отбора Код:
select cp.mbox_id, COUNT(ot.trx_id) Код:
mbox_id (No column name) Нулевых результатов не обнаружил :( ================================================ Немного поработал с запросом, получилось выводить 0ые результаты. Код:
USE Trxhist =============================== Можно ли каким-нибудь образом сделать разный порог срабатывания, скажем в будние дни от 10 транзакций, а ввыходные чтобы порог был нулевым? Не делал еще разбиения логики выполнения в зависимости от текущих условий. |
Немного дополню вопрос, как можно доработать запрос, чтобы связка IDклиента и порог срабатывания/отбора записей из табл(2 столбца получается) брались из отдельной таблицы?
К примеру если указывать ID клиента и кол-во транзакций, я бы отобразил это так(для конкретного клиента) Код:
USE Trxhist select cp.mbox_id, COUNT(ot.trx_id) having cp.mbox_id in (246) and COUNT(ot.trx_id) < 50 Можно скажем значения cp.mbox_id & кол-во транзакций(в моем случае 50), брать из другой таблицы и при этом использовать значения более чем для одного IDклиента? К примеру для клиента с ID (ID)233 (кол-во)40 (ID)333 (кол-во)700 (ID)123 (кол-во)95 Т.е. идея такая, чтобы использовать данные из таблицы в запросе при его отработке и выборки только интересующих данных |
Я тут на соседних форумах поспрашал, со мной поделились кодом по теме задачи
Код:
;with cprov_mbox as ( К примеру рассмотреть если Код:
select * from( values |
Время: 03:15. |
Время: 03:15.
© OSzone.net 2001-