如何在不分组的情况下从SQL案例子查询返回多个值
我有以下SQL查询,其中CASE语句需要返回多个值如何在不分组的情况下从SQL案例子查询返回多个值,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有以下SQL查询,其中CASE语句需要返回多个值 select TASK_NAME from TASK where TASK_TYPE in ( case when (select USER_COUNTRY from USER) in (select COUNTRY_NAME from COUNTRY where CONTINENT = 'Europe') then ('Adhoc', 'Resell') when (selec
select TASK_NAME
from TASK
where TASK_TYPE in (
case
when (select USER_COUNTRY from USER) in (select COUNTRY_NAME from COUNTRY where CONTINENT = 'Europe') then ('Adhoc', 'Resell')
when (select USER_COUNTRY from USER) in (select COUNTRY_NAME from COUNTRY where CONTINENT = 'Americas') then ('Classified', 'Bought', 'Handle')
else ('None', 'Blank')
end )
然而,WHEN子句的数量不是固定的,因为可能有更多的条件。我认为这行不通
我还要补充的是,此查询传递给的应用程序无法识别分组
我为没有提供桌子而道歉。我会在适当时候这样做。您可以将比较移到
when
子句中,让大小写返回一个指示匹配的标量值:
where 1 = (case when (select USER_COUNTRY from USER) in (select COUNTRY_NAME from COUNTRY where CONTINENT = 'Europe') and Task_Type IN ('Adhoc', 'Resell')
then 1
when (select USER_COUNTRY from USER) in (select COUNTRY_NAME from COUNTRY where CONTINENT = 'Americas') and Task_Type IN ('Classified', 'Bought', 'Handle')
then 1
when Task_Type IN ('None', 'Blank')
then 1
end )
这是一组相当奇怪的条件。您确定不能使用JOIN
更好地表达逻辑吗?您所说的“需要返回多个值”是什么意思?设计函数的Case语句将以以下方式返回第一个为真的条件。听起来您需要的是连接,而不是案例。不幸的是,组和连接在应用程序中的使用受到限制。事实上我的原始帖子中的查询是一个子查询。@Confover。我真正关心的是,用户
可能有多行。在这种情况下,SQL通常会生成一个错误。