0

我自己的类型

CREATE OR REPLACE TYPE chain_t AS TABLE OF NUMBER(11);

在选择语句中选择列作为这种类型

select 
x.id, 
cast(multiset(select parent_id from table(x.parents)) as chain_t) as chain
from
xxxx x

如果x.parents有值我有下一个结果,例如:

chain_t(22, 44)

或者如果没有

chain_t(null)

我如何计算中的行数?例如在第一个结果中 2 行在第二个结果中 0 行

4

1 回答 1

3

使用该CARDINALITY()功能。 了解更多

select id, chain, cardinality(chain) 
from (
   select 
           x.id, 
           cast(multiset(select parent_id from x) as chain_t) as chain
    from x
)
/

这是一个基于您发布的代码的简化版本的 SQL Fiddle

于 2014-08-23T14:16:06.623 回答