CASE语句真的不可以这样写吗?

xugang96 2003-05-26 09:41:17
我想在查询语句中嵌入这样的语句,可无法运行?
declare @nor int,
@later int
set @nor=0
set @later=0

select emp_no,emp_name,cus_class=case cus_class
when '出勤' then set @nor=@nor+1
when '迟到' then set @later=@later+1
end
from duty_record
where emp_no='2001'

可无法运行?
...全文
34 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xugang96 2003-05-26
  • 打赏
  • 举报
回复
TO :pbsql(风云)
谢谢回复,能否给个循环统计的思路?因为我发现SQL中的循环有很多不适应
pbsql 2003-05-26
  • 打赏
  • 举报
回复
then 后面应该是一个表达式才对,赋值语句当然不行

作个循环统计吧
xugang96 2003-05-26
  • 打赏
  • 举报
回复
谢谢回复,可同样显示错误?
服务器: 消息 156,级别 15,状态 1,行 7
在关键字 'set' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 8
在关键字 'when' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 9
在关键字 'end' 附近有语法错误。
SophiaWang 2003-05-26
  • 打赏
  • 举报
回复
declare @nor int,
@later int
set @nor=0
set @later=0

select emp_no,emp_name,(case cus_class
when '出勤' then set @nor=@nor+1
when '迟到' then set @later=@later+1
end) cus_class
from duty_record
where emp_no='2001'
CrazyFor 2003-05-26
  • 打赏
  • 举报
回复
不是CASE的问题,SELECT中,@变量=@变量+1,和字段不能同时出现,
SophiaWang 2003-05-26
  • 打赏
  • 举报
回复
declare @nor int,
@later int
set @nor=0
set @later=0

select emp_no,emp_name,(case
when cus_class='出勤' then set @nor=@nor+1
when cus_class='迟到' then set @later=@later+1
end) cus_class
from duty_record
where emp_no='2001'
liuliu7 2003-05-26
  • 打赏
  • 举报
回复
select emp_no,emp_name,
sum(case cus_class when '出勤' then 1 else 0) as nor,
sum(case cus_class when '迟到' then 1 else 0) as later
from duty_record
where emp_no='2001'
group by emp_no,emp_name
xugang96 2003-05-26
  • 打赏
  • 举报
回复
TO 罗马数字
谢谢回复,可我按你的统计出来的数字不对,他无法分类,统计的是全部cus_class字段的内容,而不能按出勤和迟到分类?
HawaiiLeo 2003-05-26
  • 打赏
  • 举报
回复
select emp_no,emp_name,
count(case cus_class when '出勤' then 1 else 0) as nor
count(case cus_class when '迟到' then 1 else 0) as later
from duty_record
where emp_no='2001'

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧