select
(case when
to_char(sysdate,'day')
= '星期五' then 10000
when
to_char(sysdate,'day')
= '星期六' then 8000
else
5000
end) as Money
from dual
----------------------------------
DECLARE @var int;
CASE @var
WHEN 1 THEN 'var is 1'
WHEN 2 THEN 'var is 2'
ELSE 'var is not 1 or 2' END
--三列名称是name,from,to
select name,from,to,datediff(ss,from,to) from tb;
--
select name,
sum(case
when getdate(from)<'2014-11-02' and getdate(to)>='2014-11-02' then datediff(ss,'2014-11-02 00:00:00',to) )
when getdate(from)='2014-11-02' and getdate(to)='2014-11-02' then datediff(ss,from,to)
when getdate(from)='2014-11-02' and getdate(to)>'2014-11-02' then datediff(ss,from,'2014-11-02 23:59:59') )
)
from tb
group by name
可以是查询语句,但查询得到的结果必须是一个值,否则就会报你所得到的错误。你可以分别运行一下select lmlmmc from lm,nrk where lmlmbm=nrklmbm和select lmlmmc from lm,nrk where lmlmbm=substring(nrklmbm,1,2),我敢肯定其中至少有一条多于一条的记录。
select 课程,
sum(case when 姓名='李四' then 成绩 end)as '李四',
sum(case when 姓名='张三' then 成绩 end)as '张三'
from table_2
group by 课程
--意思是:
查询结果按照“课程”、“李四的成绩”、“张三的成绩”显示出来,
其中“李四的成绩”计算方法是:
当姓名=李四,那么就计算将该行的成绩按照课程进行分类加总
“张三的成绩”计算方法是:
当姓名=张三,那么就计算将该行的成绩按照课程进行分类加总
select 姓名,
sum(case when 课程='语文' then 成绩 end)as '语文',
sum(case when 课程='数学' then 成绩 end)as '数学',
sum(case when 课程='英语' then 成绩 end)as '英语'
from table_2
group by 姓名
--类似的意思是:
查询结果按照“姓名”、“语文”、“数学”、“英语”按照姓名进行加总各科成绩显示出来,
其中“语文”成绩计算方法是:
当科目=语文,那么就计算将该行的成绩按照姓名进行分类加总
“数学”成绩计算方法是:
当科目=数学,那么就计算将该行的成绩按照姓名进行分类加总
“英语”成绩计算方法是:
当科目=英语,那么就计算将该行的成绩按照姓名进行分类加总
case when 条件 then 表达式1 else 表达式2 end
表示:当条件成立,则返回表达式1,否则返回表达式2
因此:sum(case when 姓名='李四' then 成绩 end)as '李四', 表示如果姓名为李四,则加总计算成绩,列名为‘李四’
类似的楼主可以自己理解了。
不能这么写。老老实实用if else 写吧
if (@outOrNot = 'all') thenbegin
select from
where xxx In (0,1,2,3,4)
end
else if (@outOrNot = 'out') then
begin
select from
where xxx In (3)
end
else if (@outOrNot = 'notOut') then
begin
select from
where xxx In (0,1,2,4)
end
以上就是关于请简要说明一下SQL中CASE表达式的用法全部的内容,包括:请简要说明一下SQL中CASE表达式的用法、SQL中CASE控制语句用法、sql中case语句问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)