一个关于Group by 的问题,请邹建等各位大哥进来看一眼

futulove 2004-07-22 02:37:01
表a
id name zt
1 你 正常
1 你 正常
1 你 正常
1 你 迟到
1 你 早退
1 你 旷工
2 我 正常
2 我 正常
2 我 正常
2 我 迟到
2 我 早退
2 我 旷工

.
.
.
等等吧,id很多,所以zt也就很多,统计的时候用到了group by
我是这么写语句的
select id,name,(count()) as 正常次数,(count()) as 迟到次数,(count()) as 早退次数,(count()) as 旷工次数
from a
group by id,name
我想问
1:四个count后()里的语句应该怎么写
2:group by后不加name为什么不对
哪看不懂在问?在线等
数据是我随便写的
...全文
176 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
futulove 2004-07-22
  • 打赏
  • 举报
回复
怎么回事不让结贴了呢
huwgao 2004-07-22
  • 打赏
  • 举报
回复
group by后不加name的话select 里就不要加name,再通过join取对应id的名称。
myhero811104 2004-07-22
  • 打赏
  • 举报
回复
你要在结果集中包含name列就必须在group by 子句中包含
myhero811104 2004-07-22
  • 打赏
  • 举报
回复
select id,name,
(select count(*) from a a1 where a1.id=aa.id and a1.name=aa.name and a1.zt='正常') as '正常',
(select count(*) from a a2 where a2.id=aa.id and a2.name=aa.name and a2.zt='迟到') as '迟到',
(select count(*) from a a3 where a3.id=aa.id and a3.name=aa.name and a3.zt='早退') as '早退',
(select count(*) from a a4 where a4.id=aa.id and a4.name=aa.name and a4.zt='矿工') as '矿工'
from a aa
group by id,name
futulove 2004-07-22
  • 打赏
  • 举报
回复
谢了,楼上的,你知道第二个问题吗?
huwgao 2004-07-22
  • 打赏
  • 举报
回复
select id,name
,正常=sum(case zt when '正常' then 1 else 0 end)
,迟到=sum(case zt when '迟到' then 1 else 0 end)
,早退=sum(case zt when '早退' then 1 else 0 end)
,矿工=sum(case zt when '矿工' then 1 else 0 end)
from a
group by id,name
futulove 2004-07-22
  • 打赏
  • 举报
回复
UP

34,838

社区成员

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

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