2016-03-15 37 views
1

有了这个代码:计数与工会

SELECT COUNT (*) FROM pcpedc WHERE pcpedc.numped IN (
    SELECT numped FROM pcpedc 
    WHERE pcpedc.DATA = TO_DATE('15-MAR-2016','DD/MM/YYYY') 
    AND pcpedc.hora < 16 
    AND pcpedc.posicao = 'L' 
    AND pcpedc.dtinicialcheckout IS NULL 
    AND pcpedc.horalibera IS NULL 

    UNION 

    SELECT numped FROM pcpedc WHERE pcpedc.DATA < TO_DATE('15-MAR-2016','DD/MM/YYYY') 
    AND pcpedc.posicao = 'L' 
    AND pcpedc.dtinicialcheckout IS NULL 

    UNION 

    SELECT numped FROM pcpedc WHERE pcpedc.DATA = TO_DATE('15-MAR-2016','DD/MM/YYYY') 
    AND pcpedc.hora < 16 
    AND pcpedc.posicao = 'L' 
    AND pcpedc.dtinicialcheckout IS NULL) 

A获得了与括号内的错误,像这样:

14时45分58秒ORA-00907:缺少右括号

任何建议?提前致谢。

+1

你在哪一个客户端运行这个 - SQL \ * Plus?如果是这样,那么'show sqlblanklines'报告是什么? –

+0

我想你错过了一个'分号'来终止你的声明,如果你正在从sqlplus运行它 –

+0

这个查询没有什么明显的错误。也许错误来自其他代码。 –

回答

0

这不是一个答案,只是可以简化查询的提示。 (你的第一个查询甚至检索你最后一个查询的子集。)

select count(distinct numped) 
from pcpedc 
where posicao = 'L' 
and dtinicialcheckout is null 
and 
(
    (data = date'2016-03-15' and hora < 16 and horalibera is null) 
    or 
    data < date'2016-03-15' 
); 
+0

就是这样!非常感谢你。我会尽量简化下一次(我是一个SQL语言的开发人员,你提示它非常有用) – AsoJoao