Выбор различных значений в SQL - PullRequest
0 голосов
/ 24 августа 2018

Я нахожусь в процессе разработки рабочего процесса для экспорта данных из базы данных Oracle в другую систему.К сожалению, я столкнулся с непростой проблемой.Система назначения использует импорт на основе XML, и любой ввод данных должен быть в очень конкретном формате.Некоторые поля не могут быть нули, и должны содержать данные, даже если это просто слово "none".Инструмент отчетности, который я использую (eVisions Argos), может справиться с этим, используя операторы If для условной печати слова none, если поле пустое.

Вот проблема.Некоторые данные в нескольких столбцах исходной базы данных противоречивы.Большинство рассматриваемых полей не являются нулевыми, но содержат два пробела (не знаю почему - я не администратор баз данных).Исключением является несколько полей, которые на самом деле являются нулевыми, а некоторые содержат данные.

Есть ли способ структурировать мой запрос таким образом, чтобы выбрать данные в поле, если оно есть, но в противном случае ввести нулевое значение?Я пробовал это (полный запрос исключен, поскольку он немного длинен):

SELECT

...

 CASE perm_address2
     WHEN '  ' THEN null
     WHEN null THEN null
     ELSE (select perm_address2 from local_lib_extract_view where perm_address2 is not null)
 END perm_address2

...

FROM local_lib_extract_view

, но получил ошибку "ORA-01427:

однострочный подзапрос возвращает большечем один ряд ".Есть ли у SQL возможности справиться с этим сценарием?

1 Ответ

0 голосов
/ 24 августа 2018

Ошибка заставила ваш подзапрос вернуть несколько строк в ELSE.

Вам не нужно использовать подзапрос. просто получите perm_address2 столбец в ELSE, вы можете удалить второй WHEN null THEN null, когда perm_address2 равно NULL, что будет NULL, так что не имеет смысла.

SELECT

...

 CASE perm_address2
     WHEN '  ' THEN null
     ELSE perm_address2
 END perm_address2

...

FROM local_lib_extract_view
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...