首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-01790:表达式必须与相应表达式LISTAGG具有相同的数据类型

ORA-01790:表达式必须与相应表达式LISTAGG具有相同的数据类型
EN

Stack Overflow用户
提问于 2018-07-24 19:43:53
回答 1查看 309关注 0票数 0

我有三个观点的联盟。视图中的数据类型是相同的,但我得到了一个错误"ORA-01790:表达式必须与相应的表达式具有相同的数据类型“。最后一个联合有一个转换为varchar的clob,以匹配上面的视图。请帮我解决这个问题

代码语言:javascript
运行
复制
SELECT
ROWNUM rownum_1,
customer_trx_id,
customer_trx_line_id,
item_name,
quantity_invoiced,
unit_selling_price,
extended_amount,
line_number,
row_num,
line_description,
tax_perc,
line_total,
tax_amount,
uom,
po_line FROM
apps.gnet_bpa_inv_lines_cons
WHERE
    :p_summary = 'N'
AND
    customer_trx_id = 3725097
UNION ALL
SELECT
ROWNUM rownum_1,
customer_trx_id,
customer_trx_line_id,
item_name,
quantity_invoiced,
unit_selling_price,
extended_amount,
line_number,
row_num,
line_description,
tax_perc,
line_total,
tax_amount,
uom,
po_line
FROM
apps.gnet_bpa_inv_lines_cons_summ
WHERE
    :p_summary = 'Y'
AND
    customer_trx_id = 3725097
UNION ALL
SELECT
MAX(ROWNUM) rownum_1,
customer_trx_id AS customer_trx_id,
MAX(customer_trx_line_id) AS customer_trx_line_id,
dbms_lob.substr(
    XMLAGG(xmlelement(e,item_name,',').extract('//text()') ORDER BY 
po_line).getclobval(),
    4000,
    1
) AS item_name,
LISTAGG(quantity_invoiced,',') WITHIN GROUP(ORDER BY po_line) AS 
quantity_invoiced,
MAX(unit_selling_price) AS unit_selling_price,
SUM(extended_amount) AS extended_amount,
MAX(line_number) AS line_number,
LISTAGG(row_num,',') WITHIN GROUP(ORDER BY po_line) AS row_num,
dbms_lob.substr(
    XMLAGG(xmlelement(e,line_description,',').extract('//text()') ORDER BY 
po_line).getclobval(),
    4000,
    1
) AS line_description,
LISTAGG(tax_perc,',') WITHIN GROUP(ORDER BY po_line) AS tax_perc,
LISTAGG(tax_amount,',') WITHIN GROUP(ORDER BY po_line) AS tax_amount,
SUM(line_total) AS line_total,
LISTAGG(uom,',') WITHIN GROUP(ORDER BY po_line) AS uom,
po_line
FROM
apps.gnet_bpa_inv_lines_cons
WHERE
    :p_summary = 'P'
AND
    customer_trx_id = 3725097
GROUP BY
po_line,
customer_trx_id
ORDER BY rownum_1;
EN

回答 1

Stack Overflow用户

发布于 2018-07-24 19:52:56

代码语言:javascript
运行
复制
LISTAGG(tax_perc,',') WITHIN GROUP(ORDER BY po_line) AS tax_perc,
LISTAGG(tax_amount,',') WITHIN GROUP(ORDER BY po_line) AS tax_amount,

最后一个联合中的char/varchar数据类型,因为它们在前两个部分中是数字/小数。检查其他类似的列,您的问题应该会得到解决。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51497737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档