Как использовать Уникальный или Отличительный в ЗАЯВЛЕНИИ CASE (SQL ORACLE)? - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь создать CASE STATEMENT в SQL (Oracle), где мне нужно выбрать только отдельные строки в дополнение к другим критериям.

Я пытаюсь сделать это следующим образом:

SELECT 
     A.*
    ,D.*
    ,(CASE WHEN (A.COLUMN1 = D.COLUMN2) AND (D.COLUMN3 = 1) AND (DISTINCT A.COLUMN4) THEN 1
     ELSE 0
    END) AS COLUMN8
FROM TOTAL1 A
FULL OUTER JOIN TOTAL2 D
ON A.COLUMN4 = D.COLUMN4

Однако я получаю сообщение об ошибке:

ORA-00936: expressão não encontrada
00936. 00000 - «отсутствует выражение»
* Причина:
*Действие: Erro na linha: 51 Coluna: 89

Я также пытался использовать UNIQUE вместо DISTINCT, но он также не работает.

Это таблица TOTAL1 (у меня естьпросто цифры):

enter image description here

И эта таблица TOTAL2 (у меня только цифры):

enter image description here

Есть идеи?

Спасибо!

1 Ответ

3 голосов
/ 28 апреля 2019

Я могу предположить, что вы намерены найти значения A.COLUMN4, которые появляются только один раз.Если это так, используйте оконные функции:

SELECT A.*, D.*,
     (CASE WHEN A.COLUMN1 = D.COLUMN2 AND
                D.COLUMN3 = 1 AND
                COUNT(*) OVER (PARTITION BY A.COLUMN4) = 1
           THEN 1
           ELSE 0
      END) AS COLUMN8
FROM TOTAL1 A FULL OUTER JOIN
     TOTAL2 D
     ON A.COLUMN4 = D.COLUMN4;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...