求一查询语句,请高手帮忙!

fengyinglois 2004-03-15 09:35:44
假如我有个表,字段如下:
工号 状态
80466 WD
80466 WD
80466 YD
80466 YD
80466 YD
80466 SC
80466 BC
80467 WD
我的问题是想用一条查询语句查得80466的状态数:WD=2、YD=3、SC=1、BC=1
...全文
31 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jastion 2004-03-15
  • 打赏
  • 举报
回复
create table tab (工号 varchar(10) ,状态 varchar(10))

insert into tab select '80466' ,'WD'
union select '80466' ,'YD'
union select '80466' ,'YD'
union select '80466' ,'YD'
union select '80466' ,'SC'
union select '80466' ,'BC'
union select '80467' ,'WD'


select 工号 ,
sum(case 状态 when 'WD' then num else 0 end ) as WD
, sum(case 状态 when 'YD' then num else 0 end ) as YD
, sum(case 状态 when 'SC' then num else 0 end ) as SC
, sum(case 状态 when 'BC' then num else 0 end ) as BC

from (
select 工号 , 状态 ,count(工号) as num from tab
group by 工号 , 状态
) A
group by 工号
/*
工号 WD YD SC BC
---------- ----------- ----------- ----------- -----------
80466 1 1 1 1
80467 1 0 0 0

*/
drop table tab
ghosthjt 2004-03-15
  • 打赏
  • 举报
回复
select 状态, count(*) as 状态数 from tablename where 工号='80466'
group by 状态
leeboyan 2004-03-15
  • 打赏
  • 举报
回复
select count(状态) from yourtable group by 状态,工号 having 工号='80466'
victorycyz 2004-03-15
  • 打赏
  • 举报
回复
select 状态, count(*) as 状态数
from tablename
where 工号='80466'
group by 状态

34,590

社区成员

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

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