2016-09-15 3 views
0

Maths 쿼리 (부울과 함께)를 사용하여 Oracle SQL Table의 열을 채우려 고했지만 '잘못된 데이터 형식'오류가 발생했습니다. 십진법. 어떤 도움을 부탁드립니다 ... 감사합니다 개빈SQL ALTER TABLE MATHS QUERY

ALTER TABLE GS_MRC_EXISTING 
ADD IF (GROSS_LAST + DISC_LAST) < (GROSS_THIS + DISC_THIS) = TRUE THEN DEC_GROSS = (GROSS_THIS - GROSS_LAST) 

CREATE TABLE GS_MRC_EXISTING (
CUST_CODE varchar (255), 
GROSS_LAST decimal (6,2), 
DISC_LAST decimal (6,2), 
GROSS_THIS decimal (6,2), 
DISC_THIS decimal (6,2), 
INC_GROSS decimal (6,2), 
INC_DISC decimal (6,2), 
DEC_GROSS decimal (6,2), 
DEC_DISC decimal (6,2) 
) 
+1

오라클의 '추가 IF'. 그 매뉴얼에서 어디에서 찾았습니까? 또한 Oracle에는 부울 데이터 유형이 없으므로 '= TRUE'조건도 유효하지 않습니다. –

+0

안녕하세요 Bob, 방금 작성한 데이터 유형을 볼 수 있도록 포함 시켰습니다. 문제가 발생한 경우를 대비해 작성했습니다. CUST_CODE, GROSS_LAST, DISC_LAST, GROSS_THIS, DISC_THIS을 (를) 채울 수있었습니다. 그리고 마지막 네 열을 채우기 위해 그것들을 비교할 필요가 있습니다. – Gavin

답변

1

나는 당신의 의도를 정말 완전히 모르겠지만, 아마도 당신은 계산 열 정의를 시도하고 있습니다 : 그런 일이 없다

CREATE TABLE GS_MRC_EXISTING (
CUST_CODE varchar (255), 
GROSS_LAST decimal (6,2), 
DISC_LAST decimal (6,2), 
GROSS_THIS decimal (6,2), 
DISC_THIS decimal (6,2), 
INC_GROSS decimal (6,2), 
INC_DISC decimal (6,2), 
DEC_GROSS decimal (6,2) 
    GENERATED ALWAYS AS (CASE 
         WHEN (GROSS_LAST + DISC_LAST) < (GROSS_THIS + DISC_THIS) 
          THEN GROSS_THIS - GROSS_LAST 
         ELSE 0 
         END), 
DEC_DISC decimal (6,2) 
) 
+0

감사합니다 Bob, 다른 열의 값을 기반으로 계산 열을 추가하려고합니다. 그 작업과 같은 '테이블 만들기'섹션에서 그들을 만들 것입니까? – Gavin

+0

네, 꽤 잘 작동합니다. –

+0

감사합니다. 지원에 감사드립니다. – Gavin