У меня проблема с устранением этой ошибки, но когда я запускаю приведенный ниже запрос, я получаю:
SQL0115 Comparison operator IN not valid
Из того, что я могу сказать в документации, это происходит из-за подвыбора в моем операторе CASE, но я не уверен почему. Это запрос, который я пытаюсь переместить с MySQL на DB2, поэтому я знаю, что будут некоторые проблемы, но я не понимаю, почему это может быть проблемой.
По сути, расширение в этом случае будет либо finallycalledpartyno
, либо callingpartyno
в таблице сеансов, но я хочу выбрать одно из них на основе того, какое из них находится в таблице моего пользователя.
Так что, если у пользователя есть расширение 1234, то в таблице сеансов каждая запись будет иметь finallycalledpartyno
или callingpartyno
как 1234, и это то, что я хочу использовать как extension
. Есть ли какой-то особенный способ, которым я должен идти об этом?
SELECT distinct
case
when callingpartyno in (select extension from hn.users where active = 1)
then callingpartyno
when finallycalledpartyno in (select extension from hn.users where active = 1)
then finallycalledpartyno
end as extension
FROM
hn.session a
join hn.call_summary b
on a.notablecallid = b.notablecallid
where
date(a.ts) >= curdate()
and (
callingpartyno in (select extension from hn.users where active = 1)
or finallycalledpartyno in (select extension from hn.users where active = 1)
)
group by extension
Пример данных
finallycalledpartyno | callingpartyno | seconds
---------------------------------------------------
1234 123456 20
1234 123456 20
1234 123456 20
123456 1234 10
123456 1234 10
123456 1234 10
4321 123456 20
4321 123456 20
4321 123456 20
123456 4321 20
123456 4321 20
123456 4321 20
Так что теперь я могу получить 2 строки
Extension | secondsWhereFC | secondsWhereCP
---------------------------------------------
1234 60 30
4321 60 60