2016-09-15 3 views
0

Я пытаюсь использовать запрос Maths (с булевым) для заполнения столбца в моей таблице Oracle SQL, но я получаю ошибку «недопустимый тип данных», я установил их как знаков после запятой. Был бы признателен за любую помощь ... Спасибо GavinSQL 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

Там нет таких вещей как «ADD IF» в Oracle. Где в Руководстве вы это нашли? Кроме того, Oracle не имеет логических типов данных, поэтому условие '= TRUE' также недействительно. –

+0

Привет, Боб, я просто включил это, чтобы вы могли видеть типы данных, которые я создал, в случае, если это было проблемой. Мне удалось заполнить 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

спасибо Бобу, я пытаюсь добавить столбцы расчета на основе значений других столбцов. Будет ли их создание в разделе «Создать таблицу», как эта работа? – Gavin

+0

Да, это работает очень хорошо. –

+0

Благодарю вас, оцените вашу поддержку. – Gavin