例如是這樣的:是否有可能在ORACLE SQL的CASE中使用SQL查詢作爲結果?
SELECT CASE
WHEN COL_1 LIKE '%4'
THEN (SELECT MAX(COL_1) FROM TAB_1)
ELSE MAX(COL_1)
END AS "RESULT"
FROM TAB_1
例如是這樣的:是否有可能在ORACLE SQL的CASE中使用SQL查詢作爲結果?
SELECT CASE
WHEN COL_1 LIKE '%4'
THEN (SELECT MAX(COL_1) FROM TAB_1)
ELSE MAX(COL_1)
END AS "RESULT"
FROM TAB_1
是的,這是好的。在此上下文中的查詢稱爲標量子查詢。它需要返回一列(通常)和最多一行。
這種特殊的版本,不過,有問題:
SELECT (CASE WHEN COL_1 LIKE '%4'
THEN (SELECT MAX(COL_1) FROM TAB_1)
ELSE MAX(COL_1)
END) AS "RESULT"
FROM TAB_1
特別是,對於CASE WHEN
工作,那麼COL_1
需求是在GROUP BY
。然而,這將是很奇怪,然後採取最大限度。
我懷疑你打算兩列或兩行:
SELECT MAX(CASE WHEN COL_1 LIKE '%4' THEN COL_1 END) as MAX_4
MAX(CASE WHEN COL_1 LIKE '%4' THEN NULL ELSE COL_1 END) as MAX_not4
FROM Ttabl_1
謝謝戈登。我錯誤地在那裏輸入了一個錯誤的場景。查詢應該是這樣的: SELECT(CASE WHEN COL_1 LIKE '%4' THEN(SELECT MAX(COL_1)FROM tab_1中,其中COL LIKE '%4') ELSE MAX(COL_1) END)中的 「結果」 FROM TAB_1 所以我想要得到的是,如果有一些以4結尾的值,查詢應該獲取以4結尾的最高值。否則它應該從COL_1返回最高值。結果應該只是一個值或一行。 –
是有可能做到這一點,這裏是該
一個例子,假設下面兩個表
表1 :CITY(ID,NAME,COUNTRYCODE)
表2:國家(代碼,名稱,大區,地區)
對於上述表格,您可以使用查詢作爲
select id,
case when countrycode like 'AUS'
then (select name from country where code like 'AUS')
else countrycode end
from city;
感謝Kunal,但在我的情況下,我正在使用一個聚合函數,因爲它會拋出一個錯誤 - 不像一個函數組,就像Gordon指出的那樣。任何想法解決它?我嘗試在THEN部分的子查詢末尾添加group by子句。 –
看看你想達到什麼你可以做這樣的事情: max_value爲(從tab_1選擇max(col_1)) select col_1 like'%4' then(從tab_1選擇max(col_1)where col_1,如'%4') else(select * from max_value)end from tab_1; 或者您可以將(從tab_1選擇max(col_1))分配給一個變量並使用它。 –
沒有成功。即使使用WITH子句,它仍會拋出相同的錯誤 - 不是按表達式分組。 –
提供樣本數據和所需結果。您的問題的答案強調「是」,但您的查詢格式不正確。 –