THEN 之后的 CASE WHEN 或从其他表中选择值

Wry*_*ymn 7 sql oracle select

我需要这样做:

SELECT 
COLUMN1,
COLUMN2,
CASE SOMETHING WHEN 0 THEN 'SOMETHING'
   ELSE
      CASE SOMETHING1 WHEN 'SOMETHING2' THEN (Here I need my value from other table)
   ELSE
   ...
   ELSE
   ...
END
END
AS SOMETHINGSPECIAL
...
...
...
Run Code Online (Sandbox Code Playgroud)

整个选择非常复杂,抱歉。

在 () 中 THEN 之后的地方,我需要从其他表中取出特定值。我已经尝试了几乎所有来自连接的东西,放在那里SELECT WHERECASE WHEN声明它总是会出现一些错误。关键词缺失等

也可能问题出在 () 内部有长连接:''

我需要将其他表中的特定值放入该连接中。它要么不想让我CASE WHEN在那之后使用其他的THEN,要么我做错了什么。

编辑(抱歉,不想t post entire query don在工作中遇到问题):

SELECT 
A.SOMETHING
CASE WHEN A.LIST_ID IN ('something','something') THEN '<A HREF="something?thresholdId=something' || GET_SITE_SUFFIX() || chr(38) || 'task=runSQL' || chr(38) || 'parseParams=true' || chr(38) || 'list_id=' || A.LIST_ID || chr(38) || 'list_name=' || A.LIST_NAME || '"> (MY VALUE FROM OTHER TABLE HERE) </A>'
END 
AS SOMETHINGSPECIAL
FROM SOMETABLE
...
Run Code Online (Sandbox Code Playgroud)

(我的值来自其他表)我尝试在那里放置 Select 语句条件、Case 语句以从其他表中取出该值,但它只会给我错误。

Gor*_*off 6

您可以使用相关子查询:

(CASE SOMETHING
     WHEN 0 THEN 'SOMETHING'
     ELSE (CASE SOMETHING1
               WHEN 'SOMETHING2' THEN (select value from othertable ot where ot.col = x.col)
               ELSE . . .
Run Code Online (Sandbox Code Playgroud)

请注意,您不需要嵌套案例。您可以将其写为:

(CASE WHEN SOMETHING = 0 THEN 'SOMETHING'
      WHEN SOMETHING1 = 'SOMETHING2' THEN (select value from othertable ot where ot.col = x.col)
      ELSE . . .
 END)
Run Code Online (Sandbox Code Playgroud)