在那之后或从另一个表中选择值时的情况

时间:2014-11-10 11:33:29

标签: 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
...
...
...

整个选择非常复杂抱歉。

在()之后的那个地方,我需要从其他表中取出特定值。 我已经尝试了几乎所有来自连接的内容,放在那里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
...

(我从其他表中获取值)我试图在那里放置Select语句条件,Case语句从其他表中取出一个值,但它只是给我错误。

2 个答案:

答案 0 :(得分:2)

您可以使用相关子查询:

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

请注意,您不需要嵌套案例。你可以写成:

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

答案 1 :(得分:0)

您可以尝试加入其他值应该来自的表,即如果这些表之间存在链接,那么这就是您应该做的事情

SELECT 
T1.COLUMN1,
T2.COLUMN1,
T.The-column-you-want-from-table2
iNNER JOIN TABLE2 T2 ON T2.cOUMN1 = T1.COLUMN1 

因此不需要case语句,因为从我的问题中我可以收集到的,你想要一个来自另一个表的值的表示值

这是另一个更具体的例子,

Select 
Transaction.OrderId
Transaction.OrderDate
Order.StatusDescription
From Transaction
Inner Join Order on Order.OrderID = Transaction.OrderID

在上面的例子中,StatusDescription是“其他”表所需要的,可以是付费,缺货或任何状态。您的第一个表格中的此状态由付费的1表示,缺货的数字等表示.....

希望这有帮助