查询中有一个错误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子句中),但我不知道为什么只有在添加这几行时才会出现这种情况。
有人能帮我吗?
发布于 2018-05-14 14:06:38
我相信,如果您移动自连接,您应该能够避免错误。尝试以下几点:
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)
;
发布于 2018-05-14 14:05:26
我确实简化了代码。命令号格式是NUMBER。
希望能帮上忙。
Select
Command_Number,
LastDateOrder
from
SAP_EKKO,
( select Command_Number , max(DATE) as lastDate from SAP_EKKO group by
Command_Number) r
where
SAP_EKKO.Command_Number = r.Command_Number
https://stackoverflow.com/questions/50331993
复制相似问题