如何 select 集合的第一个元素是查询的列
How to select the first element of a collection being a column of a query
table t 有两列:a 和 b。
a为整数,b为集合。
我想 select 为每一行 a 和集合 b 的第一个值。
我试过了,但没用
WITH
s (a, b)
AS
(SELECT 1, 'ff' FROM DUAL
UNION ALL
SELECT 1, 'ee' FROM DUAL
UNION ALL
SELECT 1, 'ee' FROM DUAL
UNION ALL
SELECT 2, 'ee' FROM DUAL),
t (a, b)
AS
( SELECT s.a, COLLECT (s.b)
FROM s
group BY s.a)
select t.a, t.b.first()
from t
[Error] Execution (42: 16): ORA-00904: "T"."B"."FIRST": invalid identifier
有办法吗?
这个查询在没有收集方法的情况下做同样的事情。
WITH
s (a, b)
AS
(SELECT 1, 'ff' FROM DUAL
UNION ALL
SELECT 1, 'ee' FROM DUAL
UNION ALL
SELECT 1, 'ee' FROM DUAL
UNION ALL
SELECT 2, 'ee' FROM DUAL),
t (a, b)
AS
( SELECT s.a, COLLECT (s.b)
FROM s
GROUP BY s.a),
v (a, b)
AS
(SELECT t.a, tb.b
FROM t
OUTER APPLY (SELECT x.COLUMN_VALUE b
FROM TABLE (t.b) x
FETCH FIRST 1 ROW ONLY) tb)
SELECT *
FROM v;
table t 有两列:a 和 b。 a为整数,b为集合。
我想 select 为每一行 a 和集合 b 的第一个值。
我试过了,但没用
WITH
s (a, b)
AS
(SELECT 1, 'ff' FROM DUAL
UNION ALL
SELECT 1, 'ee' FROM DUAL
UNION ALL
SELECT 1, 'ee' FROM DUAL
UNION ALL
SELECT 2, 'ee' FROM DUAL),
t (a, b)
AS
( SELECT s.a, COLLECT (s.b)
FROM s
group BY s.a)
select t.a, t.b.first()
from t
[Error] Execution (42: 16): ORA-00904: "T"."B"."FIRST": invalid identifier
有办法吗?
这个查询在没有收集方法的情况下做同样的事情。
WITH
s (a, b)
AS
(SELECT 1, 'ff' FROM DUAL
UNION ALL
SELECT 1, 'ee' FROM DUAL
UNION ALL
SELECT 1, 'ee' FROM DUAL
UNION ALL
SELECT 2, 'ee' FROM DUAL),
t (a, b)
AS
( SELECT s.a, COLLECT (s.b)
FROM s
GROUP BY s.a),
v (a, b)
AS
(SELECT t.a, tb.b
FROM t
OUTER APPLY (SELECT x.COLUMN_VALUE b
FROM TABLE (t.b) x
FETCH FIRST 1 ROW ONLY) tb)
SELECT *
FROM v;