如何在“案例声明”(SQL ORACLE)中使用“唯一”或“不同”?

时间:2019-04-28 13:49:00

标签: sql oracle

我正在尝试在SQL(Oracle)中创建一个CASE STATEMENT,除了其他条件外,我只需要选择单行。

我正试图通过这种方式做到这一点:

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:表达encontrada
  00936. 00000-“缺少表达式”
  *原因:
  *动作:Erro na linha:51科鲁纳:89

我也尝试使用UNIQUE代替DISTINCT,但是它也不起作用。

这是TOTAL1个表(我只有数字):

enter image description here

这个TOTAL2表(我只有数字):

enter image description here

有什么主意吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

我可以推测,您的意图是查找仅出现一次的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;