Oracle:使用强制转换多重集时出现 ORA-00932

Oracle: ORA-00932 when using cast multiset

我有以下单独使用的查询:

SELECT COUNT(u.id) FROM users u);
SELECT COUNT(s.id) FROM servers s);

我想在同一个查询中使用它们,所以我创建了这个:

SELECT CAST( MULTISET( SELECT count(u.id) FROM users u)
             AS NUMBER) AS nr_users,
       CAST( MULTISET( SELECT count(s.id) FROM servers s)
             AS NUMBER) AS nr_servers
FROM dual;

返回错误:

ORA-00932: inconsistent datatypes: expected NUMBER got -00932.

count() returns 一个数字,我将 multiset 指定为数字,为什么会给我这个错误?

子查询不是return集合类型而是标量,只需使用

SELECT
    (SELECT count(u.id) FROM users u) AS nr_users,
    (SELECT count(s.id) FROM servers s) AS nr_servers
FROM dual;