SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错相关的知识,希望对你有一定的参考价值。
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;
CASE WHEN 语句 报错 可能就是因为你给了一个错误的判断条件,他的结果也不是一个布尔值啊来自:求助得到的回答 参考技术A case语句只能代表一个值,如果你的select brno from poozfmessagebrno where upbrno = '56601'语句中返回多个值的话就会报错喽追问
我现在想要得到多个值,在in里做条件,该如何实现此方案
追答那就看你为什么用case了,如果只是做选择的话,可以用if else写两组语句进行切换
本回答被提问者采纳 参考技术B 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'
) 参考技术C 先将select brno from poozfmessagebrno where upbrno = '56601'结果赋值给一个变量再去试一下语句
sql中,In和where的区别是什么
where也能查询多条语句吧?
那IN的主要功能就是查询多条=?是这个意思吗
应用解释如下:
1、如需有条件地从表中选取、删除、更新数据时,使用Where;
2、In只作为Where条件子句下的一个运算符,除了In之外还有Between、Like、=、>、>=、<、<=等运算符。
下面举例说明:
1、查询名字为A和B的学生,则语句为
Select * from student where name in(\'A\',\'B\'); 参考技术A SQL
语句中In
和
Where
的含义不同。
应用解释如下:
1、如需有条件地从表中选取、删除、更新数据时,使用Where;
2、In只作为Where条件子句下的一个运算符,除了In之外还有Between、Like、=、>、>=、<、<=等运算符。
下面举例说明:
1、查询名字为A和B的学生,则语句为
Select
*
from
student
where
name
in('A','B'); 参考技术B in可以进行模糊查询,可以在in前面添加条件.在大的范围内进行查询,举个最简单的例子,比如查询没被学生选的课.就只能用in或者exist写嵌套.而where就是一个简单的条件语句,只能用来写简单的条件语句.虽然也可以写嵌套可是条件只能写简单明了的. 参考技术C where表明where后面的语句是查询条件,如果有查询条件必须以where开始
in表明in后面的是枚举值或者查询结果集,属于查询条件的一种 参考技术D in一般用来查一个数组或者举例值的,where的范围更广点。其实你对in的解释是对的。
以上是关于SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错的主要内容,如果未能解决你的问题,请参考以下文章