【发布时间】:2016-04-29 14:50:26
【问题描述】:
当我能够使用cast(collect(value) as DBMSOUTPUT_LINESARRAY) 将结果汇总到一行中时,我感到非常高兴,如下例所示:
select site, lote, material, cast(collect(value) as DBMSOUTPUT_LINESARRAY) AS valueagg
from table1
GROUP BY site, lote, material, status;
SITE LOTE MA VALUEAGG
------ ------- -- ----------------------------------------------------------------------------------
AAKI01 0000443 HW SYS.DBMSOUTPUT_LINESARRAY('9362','10k','1st','USERS','8','100MW','2','V2','CELL')
但是当我尝试对第一个查询的结果进行另一个聚合时,例如 cast(collect(valueagg) as DBMSOUTPUT_LINESARRAY),我得到一个错误,如下例所示:
SELECT site, material, cast(collect(valueagg) as DBMSOUTPUT_LINESARRAY) AS valueagg2
FROM table1_agg -- result of first query
GROUP BY site, material;
Error report -
SQL Error: ORA-00932: inconsistent datatypes: expected - got -
00932. 00000 - "inconsistent datatypes: expected %s got %s"
我尝试转换为 varchar2,即使它会限制结果 - 我对此并不担心,因为字符串的前 4000 个字符对我来说已经足够了 - 但我无法做到这一点。
【问题讨论】:
-
请发布一些示例数据和代码的相关部分
-
select site, lote, material, cast(value) as DBMSOUTPUT_LINESARRAY) AS valueagg from (table1) GROUP BY site, lote, material I get AAKI01, 0000443, HW, SYS.DBMSOUTPUT_LINESARRAY(9362 CELL V2 2 100MW 8 USERS 1st 10K) 在这我做 SELECT site, material, cast(collect(valueagg) as DBMSOUTPUT_LINESARRAY) AS valueagg2 FROM table1_agg GROUP BY site, material 我得到错误