Я пытаюсь написать решение для запросов на основе следующих требований: «FinalCalledPartyNumber (голосовая почта 3699) вызывается больше, чем X раз в назначенный временной интервал, например последние 5 минуты «.Count (*) in Self Join Не работает
Столбцы заключаются в следующем:
- ID - столбец идентификаторов ех. 101045
- Название - телефон # звонок 3699. ex. 555-123-4567 -> 3699
- FinalCalledPartyNumber - 3699
- DateTimeOrigination - DateTime
Используя автообъединение, приведенный ниже код возвращает результирующий набор числа вызовов 3699 и огнестойкость предупреждение в телефонной системы. Мне нужно запустить оповещение только после того, как 3699 звонил больше X раз за этот 5-минутный период. Я попытался использовать предложение Have с графом () после группы By. Но он работает только при наличии Count ()> = 1. Если я перейду на «Имея счетчик» (*)> = 2 или выше, он не вернет строки.
Синтаксис ниже выделен жирным шрифтом Невозможно изменить, это системный генератор SWQL.
Select VoipCallDetailsAlert.ID, VoipCallDetailsAlert.Name From VoipCallDetailsAlert
Join (
SELECT
vcda2.Name AS vcda2_name,
vcda2.FinalCalledPartyNumber AS vcda2_FinalCalledPartyNumber,
vcda2.DateTimeOrigination AS vcda2_DateTimeOrigination
FROM VoipCallDetailsAlert vcda2
WHERE FinalCalledPartyNumber = '3699'
AND vcda2.DateTimeOrigination > DateAdd(mi, -5, GetDate())
Group By vcda2.name, vcda2.FinalCalledPartyNumber, vcda2.DateTimeOrigination
) Results ON vcda2_name = VoipCallDetailsAlert.Name
результат Пример:
ID Name FinalCalledPartyNumber DateTimeOrigination
101045 555-123-4567 -> 3699 3699 12/20/15 5:29 PM
101049 555-412-4767 -> 3699 3699 12/20/15 5:36 PM
Спасибо, Dobber
Какая СУБД вы используете? –
По внешнему виду, похоже, это sql-сервер –
Count() не работает, потому что вы также группируете 'vcda2.DateTimeOrigination' .., что, вероятно, уникально .. Также не могу сказать, какая часть вашего запроса не может быть изменен .. можете быть более конкретным – JamieD77