SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错

selectnew_projectsize,count(cifno)from(selectdistinct(a.cifno)ascifno,b.new_projectsi... select new_projectsize, count(cifno)
from (select distinct (a.cifno) as cifno,
b.new_projectsize as new_projectsize
from cr_xdall a, cr_corp_inf b
where substr(a.mon_date, 1, 6) = '201212'
and xdflag = '1'
and opn_br_no in
(case when '1' = '1' then
(select brno from poozfmessagebrno where upbrno = '56601') else
'50000' end)
and a.cifno = b.cifno
and bal != '0'
group by b.new_projectsize, a.cifno)
group by new_projectsize;
展开
 我来答
zhangxinrally
2013-01-31 · TA获得超过155个赞
知道答主
回答量:38
采纳率:0%
帮助的人:9.7万
展开全部
.....老大看清楚你用的有问题,=是赋值不是判断==才是判断,'1' = '1'把一个字符串赋值给另一个字符串没有意义,而且似乎也不符合语法啊,这种错误似乎很低级,我这里没有现成的调试工具,你改了这个错误看看,如果还有把错误贴一下
CASE WHEN 语句 报错 可能就是因为你给了一个错误的判断条件,他的结果也不是一个布尔值啊
来自:求助得到的回答
szm341
2013-01-28 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5185万
展开全部
case语句只能代表一个值,如果你的select brno from poozfmessagebrno where upbrno = '56601'语句中返回多个值的话就会报错喽
追问
我现在想要得到多个值,在in里做条件,该如何实现此方案
追答
那就看你为什么用case了,如果只是做选择的话,可以用if else写两组语句进行切换
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-01-29
展开全部
and opn_br_no in
(case when '1' = '1' then
(select brno from poozfmessagebrno where upbrno = '56601') else
'50000' end)

修改为:

and opn_br_no in
( select
case when '1' = '1' then brno else '50000' end
from
poozfmessagebrno
where upbrno = '56601'
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
家有一只羊
2013-01-29 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:108万
展开全部
先将select brno from poozfmessagebrno where upbrno = '56601'结果赋值给一个变量再去试一下语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式