例如:
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
答案 0 :(得分: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
答案 1 :(得分:0)
是的,可以这样做,这是
的一个例子让我们假设以下两个表
表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;