Sql 在CASE和subselect中使用时发生db2错误
我在解决此错误时遇到问题,但当我运行以下查询时,我得到:Sql 在CASE和subselect中使用时发生db2错误,sql,db2,ibm-midrange,db2-400,Sql,Db2,Ibm Midrange,Db2 400,我在解决此错误时遇到问题,但当我运行以下查询时,我得到: SQL0115中的比较运算符无效 从文档中可以看出,这是因为我的CASE语句中的sub-select,但我不确定为什么。这是一个我正试图从MySQL迁移到DB2的查询,所以我知道会有一些问题,但我不明白为什么这会是一个特别的问题 基本上,在本例中,扩展名将是会话表中的finallycalledpartyno或callingpartyno,但我想根据我的用户表中的扩展名选择其中一个 因此,如果一个用户有扩展名1234,那么在会话表中,每个记
SQL0115中的比较运算符无效
从文档中可以看出,这是因为我的CASE语句中的sub-select,但我不确定为什么。这是一个我正试图从MySQL迁移到DB2的查询,所以我知道会有一些问题,但我不明白为什么这会是一个特别的问题
基本上,在本例中,扩展名将是会话表中的finallycalledpartyno
或callingpartyno
,但我想根据我的用户表中的扩展名选择其中一个
因此,如果一个用户有扩展名1234,那么在会话表中,每个记录都将有最终调用partyno
或调用partyno
作为1234,这就是我想用作扩展名的内容。有没有什么特别的方法可以让我这样做
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
所以现在我可以得到两行
Extension | secondsWhereFC | secondsWhereCP
---------------------------------------------
1234 60 30
4321 60 60
对你有用吗
with query_res (finallycalledpartyno, callingpartyno, seconds) as (values
(1234 , 123456, 20)
, (123456 , 4321 , 10)
)
, users (extension, active) as (values
(1234, 1)
, (4321, 1)
)
select q.*, coalesce(c.extension, f.extension)
from query_res q
left join (select distinct extension from users where active=1) c on c.extension=q.callingpartyno
left join (select distinct extension from users where active=1) f on f.extension=q.finallycalledpartyno;
为什么是分组依据?我从中提取了一些其他聚合数据,但我会为每个用户获得一条不同聚合指标的记录,因此,一旦说了所有的话,我就按照user@jarlh但是其他的聚合似乎是有效的,只是无法让这个选择工作,所以这就是为什么我只在这里包含示例数据和所需结果,这将非常有帮助。@GordonLinoff我使用一些示例数据和示例查询结果进行了更新,在那里我可以根据扩展的位置获得聚合数据