我需要这样做:
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 WHERE
或CASE 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语句从其他表中取出一个值,但它只是给我错误。
答案 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表示,缺货的数字等表示.....
希望这有帮助