首页 > 解决方案 > ORA-01722: 添加子查询时抛出无效数字

问题描述

我的查询中有错误 ORA-01722。这段代码让我得到了命令列表。我需要添加一个子查询以仅获取最后订购的命令。以下代码运行良好(使用业务对象生成),我尝试添加我在评论中留下的行

SELECT
ltrim(SAP_MARA.MATNR,'0'),
SAP_MAKT.MAKTX,
SAP_MARA.MTART,
SAP_MARA.MATKL,
SAP_EKKO.EKGRP,
SAP_EKPA.LIFN2,
SAP_EKKO.EBELN,
SAP_EKPO.netwr,
SAP_EKKO.AEDAT
-- r.lastDate
FROM
SAP_MARA,
SAP_MAKT,
SAP_EKKO,
SAP_EKPA,
SAP_EKPO
--,( select EBELN , max(AEDAT) as lastDate from SAP_EKKO group by EBELN) r 
WHERE
( SAP_EKKO.MANDT=SAP_EKPO.MANDT and SAP_EKKO.EBELN=SAP_EKPO.EBELN  )
AND  ( SAP_MAKT.MATNR(+)=SAP_MARA.MATNR
  and SAP_MAKT.SPRAS(+)='F'  )
AND  ( SAP_MARA.MATNR(+)=SAP_EKPO.MATNR  )
AND  ( SAP_EKPO.EBELN like '45%'
and SAP_EKPO.MATNR<>' '  )
AND  ( SAP_EKKO.EBELN like '45%' and SAP_EKKO.LIFNR<>' '  )
AND  ( SAP_EKPA.MANDT=SAP_EKKO.MANDT and SAP_EKPA.EBELN=SAP_EKKO.EBELN  )
AND  ( SAP_EKKO.BUKRS= '1000'  )
 --and  SAP_EKKO.AEDAT = r.lastDate
;

当我将它称为查询时,子查询也可以工作。我知道这个错误来自尝试将字符串转换为数字(可能在 WHERE 子句中),但我不明白为什么只有当我添加这几行时才会发生这种情况。

有人能帮我吗?

标签: sqloracle

解决方案


我相信如果你移动自我加入,你应该能够避免错误。尝试以下操作:

SELECT
ltrim(SAP_MARA.MATNR,'0'),
SAP_MAKT.MAKTX,
SAP_MARA.MTART,
SAP_MARA.MATKL,
k.EKGRP,
SAP_EKPA.LIFN2,
k.EBELN,
SAP_EKPO.netwr,
k.AEDAT
FROM
SAP_MARA,
SAP_MAKT,
SAP_EKKO k,
SAP_EKPA,
SAP_EKPO
WHERE
( SAP_EKKO.MANDT=SAP_EKPO.MANDT and SAP_EKKO.EBELN=SAP_EKPO.EBELN  )
AND  ( SAP_MAKT.MATNR(+)=SAP_MARA.MATNR
  and SAP_MAKT.SPRAS(+)='F'  )
AND  ( SAP_MARA.MATNR(+)=SAP_EKPO.MATNR  )
AND  ( SAP_EKPO.EBELN like '45%'
and SAP_EKPO.MATNR<>' '  )
AND  ( SAP_EKKO.EBELN like '45%' and SAP_EKKO.LIFNR<>' '  )
AND  ( SAP_EKPA.MANDT=SAP_EKKO.MANDT and SAP_EKPA.EBELN=SAP_EKKO.EBELN  )
AND  ( SAP_EKKO.BUKRS= '1000'  )
and  k.AEDAT = (select max(AEDAT) from SAP_EKKO k2 where k2.ebeln = k.ebeln)
;

推荐阅读