作业帮 > 综合 > 作业

case when.then.else.end

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/22 14:22:28
case when.then.else.end
SQL实现如下功能
用case when...then...else.end 实现
当A=1时,那么B=1,否则B=0;C=0,否则C=1
case when.then.else.end
首先你要搞清楚case when的用法
case when最终得到的结果是一个值,而不是多个值,更不是赋值.你写的就是赋值了.
你是要更新么?
update 表 set b = (case A when 1 then 1 else 0 end),c = (case A when 1 then 0 else 1 end)
一定要写两次才行.
如果查询语句,那么B和C应该是你构建的两个列了
select (case A when 1 then 1 else 0 end) as B,
(case A when 1 then 0 else 1 end) as C
from 表
case when也可以写成
case when A = 1 then 1 else 0 end这样的形式.
不管怎么写,你要记住,case when语句,得到的是一个值,而不是在里面赋值.
因为你写的并不明确,所以大家都搞不清楚你到底是要更新B列和C列还是要查询
再问: 额。。我不是要update某列,是这样的 举个例子,我本来是写了一段SQL:select t.month,t.name,t.sex from table t 这样子查询出来一笔数据,如下格式 month name sex 9月 小李 男 9月 小王 男 8月 小红 女 我想让出来的数据变成下面的样子 9月 0 0 9月 0 0 8月 小红 女 也就是说只要是month是9月的,name和sex都显示0 只是显示0,不进行update 用case when如何实现?谢谢
再答: select month, (case month when '9月' then '0' else name end) as name, (case month when '9月' then '0' else sex end) as sex from table 看明白了吧?这个很简单了 如果month是9月,那么就取0,否则取相应的字段就好了。但是注意取'0'是字符型的,为了和你的字段类型对应。 记住case when里面多个情况,返回的类型一定要是一致的。 这就相当于构建了一个列一样,不同情况,这个列取的值不同,但是必须是同一类型。