我正在尝试在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个表(我只有数字):
这个TOTAL2表(我只有数字):
有什么主意吗?
谢谢!
答案 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;