嘿,伙计们,我正试图在我的postgres数据库中运行这个查询,但它返回了一个错误:[Err]Err or:syntax error at or near“,”
第13行:而不是substr(a.zoneiddest,1,3)=any('254','255','256'。。。
问题是这样的

SELECT
    to_char(a.CALLDATE, 'yyyymm') AS month,
    min(a.calldate) AS start_time,
    max(a.calldate) AS end_time,
    ceil(SUM(a.CALLDURATION::INT) / 60) AS minutes,
    COUNT(DISTINCT a.IDENTIFIANT) AS distinct_callers,
    a.zoneiddest AS country_code,
    b.country
FROM cdr_data a,
    country_codes b
WHERE a.CALLSUBCLASS = '002'
  AND a.CALLCLASS = '008'
  AND a.zoneiddest::INT > 0
  AND SUBSTR(a.CALLEDNUMBER, 1, 2) NOT IN
    ( '77', '78', '75', '70', '71', '41', '31', '39', '76', '79' )
  AND NOT substr(a.zoneiddest, 1, 3) = ANY
    ( '254', '255','256', '211', '257', '250', '256' )
  AND trim(a.zoneiddest) = trim(b.country_code)
GROUP BY
    to_char(a.CALLDATE, 'yyyymm'),
    a.zoneiddest,
    b.country
ORDER BY 1

同一个查询在oracle中很好地工作,只需在a.zoneiddest::integer>0到a.zoneiddest>0之间做一个小的更改
我能做错什么

最佳答案

尝试将关键字any与参数数组结合使用,如下所示:

= any (ARRAY['254','255','256','211','257','250','256'])

08-27 10:39