SQL-выражение в выражении UPDATE - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь отобразить этот конкретный код SQL для хранилища данных.

У меня есть два столбца (TARGET) и (NET_SALARY), цель состоит в том, чтобы сопоставить NET_SALARY с 0, когда TARGET равен 700, в других случаях чистая зарплата подстроки 1, 30

Я получаю пропущенную ошибку в правой скобке

Оба столбца имеют тип данных varchar2

CASE 
  WHEN SRC_CUSTOMER.TARGET = '700' THEN SRC_CUSTOMER.NET_SALARY = '0'
  ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Если это в контексте отображения / интерфейса ODI, вы можете использовать только SQL, а не PL / SQL. Вы не можете присвоить значение SRC_CUSTOMER.NET_SALARY в первом ТО. На самом деле вам нужно только установить желаемое значение, и оно будет сопоставлено с вашим целевым атрибутом.

Попробуйте с

CASE 
  WHEN SRC_CUSTOMER.TARGET = '700' THEN '0'
  ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END
0 голосов
/ 07 ноября 2018

Переместите присваивание перед ключевым словом case и укажите SRC_CUSTOMER.TARGET в качестве внутреннего выражения:

SRC_CUSTOMER.NET_SALARY = 
CASE SRC_CUSTOMER.TARGET
WHEN '700' THEN '0'
ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END

Может быть переписан с помощью функции декодирования :

SRC_CUSTOMER.NET_SALARY = decode(SRC_CUSTOMER.TARGET,'700','0',SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30))

...