2017-12-31 14 views
-2

"잘못된 번호"가 표시됩니다Oracle sqlplus query

아무도 내가 뭘 잘못하고 있는지 안내 할 수 있습니까 ???

select TO_CHAR(a.START_TIME,'YY-MON-DD HH24') as START_TIME, 
     count(*) AS NbOperations, 
     SUM(CASE WHEN OPERATION_RESULT=0 THEN 1 ELSE 0 END) AS Success, 
     SUM(CASE WHEN OPERATION_RESULT=200 THEN 1 ELSE 0 END) AS Cancel, 
     SUM(CASE WHEN OPERATION_RESULT=203 THEN 1 ELSE 0 END) AS AppletInternalError, 
     SUM(CASE WHEN OPERATION_RESULT=406 THEN 1 ELSE 0 END) AS TimeoutWaitForCard, 
     SUM(CASE WHEN OPERATION_RESULT=413 THEN 1 ELSE 0 END) AS BillingError, 
     SUM(CASE WHEN OPERATION_RESULT=1000 THEN 1 ELSE 0 END) AS ABANDONNED, 
     SUM(CASE WHEN OPERATION_RESULT=1004 THEN 1 ELSE 0 END) AS ABANDON_FOR_NEW_OPERATION, 
     SUM(CASE WHEN OPERATION_RESULT NOT IN (0,200,203,406,413,1000,1004) THEN 1 ELSE 0 END) AS NbOthers 
from MyTable1 a, 
     MyTable2 b 
where OPERATION_TYPE in (2,3,4,5) 
and a.OPERATION_TYPE=b.OPERATION_ID 
and a.START_TIME >= to_timestamp('&1', 'YYYY-MM') 
and a.START_TIME < to_timestamp('&2', 'YYYY-MM') + interval '1' month 
group by TO_CHAR(a.START_TIME,'YY-MON-DD HH24') 
order by TO_CHAR(START_TIME,'YY-MON-DD HH24'); 
+0

@scaisEdge이 (작은 따옴표 약 1) 확실히 구문은 작은 따옴표를 필요로하기 때문에 ** ** 이유가, 처리하지 않을 때입니다 간격. 설명서에서 "간격 리터럴"을 읽으십시오 (https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#i38598). 그 이유는 무엇입니까? 몰라; 우리는 테이블의 설명이나 데이터가 없기 때문에 추측하기 어렵습니다. 시도했지만 실패 함 :) – Littlefoot

+0

대체 변수가 아닌 SQL * Plus와 어떤 관련이 있습니까? 그것들에 어떤 가치를 사용하고 있습니까? 그들은'2018-01' (따옴표 없음)과 같을 필요가 있습니다. –

+0

그건 그렇고, TO_CHAR (START_TIME, 'YY-MON-DD HH24')로 주문 하시겠습니까? 그러면 2 월과 1 월 이전에 4 월과 8 월이 주어집니다 (영어 월 이름으로 가정). –

답변

0

체크하여 입력 2의 형식은 어쩌면 당신의 날짜 마스크와 일치하지 않습니다 'YYYY-MM'를. OPERATION_TYPE과 OPERATION_RESULT가 둘 다 숫자 데이터 유형입니까? 숫자와 다른 물건을 수납 할 수 있습니다. 나는 SQL 코드 아래 사용하여 문제를 해결할 수 있어요

0

:

select TO_CHAR(a.START_TIME,'YY-MON-DD HH24') as Hourly, count(*) AS NbOperations, 
SUM(CASE WHEN OPERATION_RESULT=0 THEN 1 ELSE 0 END) AS Success, 
SUM(CASE WHEN OPERATION_RESULT=200 THEN 1 ELSE 0 END) AS Cancel, 
SUM(CASE WHEN OPERATION_RESULT=203 THEN 1 ELSE 0 END) AS AppletInternalError, 
SUM(CASE WHEN OPERATION_RESULT=406 THEN 1 ELSE 0 END) AS TimeoutWaitForCard, 
SUM(CASE WHEN OPERATION_RESULT=413 THEN 1 ELSE 0 END) AS BillingError, 
SUM(CASE WHEN OPERATION_RESULT=1000 THEN 1 ELSE 0 END) AS ABANDONNED, 
SUM(CASE WHEN OPERATION_RESULT=1004 THEN 1 ELSE 0 END) AS ABANDON_FOR_NEW_OPERATION, 
SUM(CASE WHEN OPERATION_RESULT NOT IN (0,200,203,406,413,1000,1004) THEN 1 ELSE 0 END) AS NbOthers 
from gsg3_invocation_history a, GSG3_OPERATION_TYPE b where START_TIME >= to_timestamp('&1', 'YYYY-MM') 
and START_TIME < to_timestamp('&2', 'YYYY-MM') + interval '1' month and OPERATION_TYPE in (2,3,4,5) and a.OPERATION_TYPE=b.OPERATION_ID 
group by TO_CHAR(a.START_TIME,'YY-MON-DD HH24') order by TO_CHAR(START_TIME,'YY-MON-DD HH24');