【发布时间】:2018-08-06 08:32:28
【问题描述】:
我在执行 oracle sql 时遇到问题,第一个代码示例在执行时正在运行,而第二个代码示例出现错误 ('invalid number') ,两者都应该产生相同的结果。请问第二个sql有什么问题吗?请指导我。
第一个 SQL
select a5.LOTID,COUNT(a5.stephandle) AS STEPHANDLE from LOTFLOW_D a5,
(select distinct(LOTID),MAX(STEPHANDLE) AS STEPHANDLE from Lotmove_R
where QTAP_GROUP In ('8685','8686','8687','8688','8689','8533','8532','2534','2533','8684','8690')
and datadate>sysdate-3
and priority<=5
and SUBPLANID NOT LIKE '%RWK%' AND STEPHANDLE NOT LIKE '%8888%' AND STEPHANDLE LIKE '%.%.%'
group by lotid) a6
where a5.lotid=a6.lotid
and a5.STEPHANDLE > a6.STEPHANDLE AND A5.EQPTYPE NOT IN ('CUDDFINP','CUBDFINP','BDFINP','DDFINP','CUDFSEM','DFSEM','SORT','CUSORT','CUNPURGE','NPURGE','EDFINP','CUEDFINP')
group by a5.lotid
order by a5.lotid
第一个 sql 的输出(结果正是我想要的)
LOTID STEPHANDLE
_____ ___________
S8CN9 214
S7JY7 30
... .....
第二条 SQL
Select a5.lotid,a5.STEPHANDLE from
(select lotid,COUNT(stephandle) as STEPHANDLE, EQPTYPE from LOTFLOW_D Group by lotid, EQPTYPE ) a5
left join
(select distinct(LOTID), MAX(STEPHANDLE) AS STEPHANDLE from Lotmove_R
where QTAP_GROUP In ('8685','8686','8687','8688','8689','8533','8532','2534','2533','8684','8690')
and datadate>sysdate-3
and priority<=5
and SUBPLANID NOT LIKE '%RWK%' AND STEPHANDLE NOT LIKE '%8888%' AND STEPHANDLE LIKE '%.%.%'
group by lotid) a6 on a5.lotid=a6.lotid
where a5.STEPHANDLE > a6.stephandle AND a5.EQPTYPE NOT IN ('CUDDFINP','CUBDFINP','BDFINP','DDFINP','CUDFSEM','DFSEM','SORT','CUSORT','CUNPURGE','NPURGE','EDFINP','CUEDFINP')
order by a5.lotid
第二个出现错误 (invalid number for the max(stephandle)) as the value for stephandle 类似于 1470.0.0400,我知道这不是一个数字,但它使用第一个 sql 可以完美运行,并且符合我的预期结果(以数字显示),我尝试了 count(stephandle)但结果错误,我需要使用左连接在我的主 sql 上运行的第二种 sql 格式
【问题讨论】:
-
您的查询似乎没有多大意义。您希望
lotmove.stephandle匹配'%.%.%'。其中你取最大值并稍后与一个数字(来自另一个查询的count(stephandle))进行比较。你怎么可能说 123 是大于还是小于 '12.34.56'? -
旁注:您希望
distinct(LOTID)做什么?首先,DISTINCT是一行的运算符,所以它实际上是DISTINCT lotid, max(stephandle)。然后,您按lotid分组,因此每一行总是与其他行不同。 -
对不起,我在分组后忘记删除那个独特的
-
有些行只有一个点。但这适用于第一个 sql
-
请编辑您的帖子并包含您的表和示例数据的 DDL,这会导致查询 #1 工作而查询 #2 失败。谢谢。
标签: sql oracle oracle-sqldeveloper