表 t 有两列:a 和 b。
a是整数,b是集合。
我想为每一行选择 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
[错误]执行(42:16):ORA-00904:“T”。“B”。“FIRST”:无效标识符
有办法做到这一点吗?
此查询在不首先使用集合方法的情况下执行相同的操作。
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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)