ORA-00932:数据类型不一致:应为-,但却获得CLOB

来源:互联网 发布:北京java薪资待遇 编辑:程序博客网 时间:2024/05/18 12:29
SELECT * FROM(       SELECT SUM(debitquantity) AS "debitquantity",              SUM(debitamount) AS "debitamount",              SUM(localdebitamount) AS "localdebitamount",              SUM(creditquantity) AS "creditquantity",              SUM(creditamount) AS "creditamount",              SUM(localcreditamount) AS "localcreditamount",              TO_CHAR(WM_CONCAT(DISTINCT tablex.pkAccsubj)) AS pkAccsubj        FROM (SELECT SUM(glDetail.creditamount) AS creditamount,                     SUM(glDetail.debitamount) AS debitamount,                     SUM(glDetail.localcreditamount) AS localcreditamount,                     SUM(glDetail.localdebitamount) AS localdebitamount,                     SUM(glDetail.creditquantity) AS creditquantity,                     SUM(glDetail.debitquantity) AS debitquantity,                     glDetail.pk_accsubj AS pkAccsubj               FROM gl_detail glDetail               LEFT JOIN bd_accsubj bdAccsubj               ON glDetail.pk_accsubj = bdAccsubj.pk_accsubj               LEFT JOIN gl_voucher glVoucher               ON glDetail.pk_voucher = glVoucher.pk_voucher               WHERE 1 = 1                   AND glDetail.yearv = '2014'                   AND glDetail.periodv = '01'                   AND bdAccsubj.subjcode LIKE CONCAT(1001, '%')                   AND glVoucher.pk_corp = '1012'                   AND glVoucher.isdifflag = 'N'                   AND (glVoucher.pk_manager IS NOT NULL AND                       glVoucher.pk_manager != 'N/A')         GROUP BY glDetail.yearv, glDetail.periodv, glDetail.pk_accsubj) tablex) tableA LEFT JOIN(     SELECT (SUM(debitquantity) - SUM(creditquantity)) AS "initamount",            (SUM(debitamount) - SUM(creditamount)) AS "initcreditamount",            (SUM(localdebitamount) - SUM(localcreditamount)) AS "initdebitamount",            TO_CHAR(WM_CONCAT(DISTINCT tabley.pkAccsubj)) AS pkAccsubj     FROM (SELECT SUM(glDetail.creditamount) AS creditamount,                  SUM(glDetail.debitamount) AS debitamount,                  SUM(glDetail.localcreditamount) AS localcreditamount,                  SUM(glDetail.localdebitamount) AS localdebitamount,                  SUM(glDetail.creditquantity) AS creditquantity,                  SUM(glDetail.debitquantity) AS debitquantity,                  glDetail.pk_accsubj AS pkAccsubj          FROM gl_detail glDetail          LEFT JOIN bd_accsubj bdAccsubj            ON glDetail.pk_accsubj = bdAccsubj.pk_accsubj          LEFT JOIN gl_voucher glVoucher            ON glDetail.pk_voucher = glVoucher.pk_voucher         WHERE 1 = 1           AND glDetail.yearv = '2014'           AND bdAccsubj.subjcode LIKE CONCAT(1001, '%')           AND glVoucher.pk_corp = '1012'           AND glVoucher.isdifflag = 'N'           AND (glVoucher.pk_manager IS NOT NULL AND               glVoucher.pk_manager != 'N/A')         GROUP BY glDetail.yearv, glDetail.periodv, glDetail.pk_accsubj) tabley) tableB ON tableA.pkAccsubj = tableB.pkAccsubj
我出现上面这个异常的原因是:WM_CONCAT()函数返回的是文本类型,作为关联字段时取得CLOB没有,没有取到真正的字段值,将字段TO_CHAR()转为字符串便没有报错了。
0 0