sqlserver2008中group by 统计问题。

快跑蜗牛哥 2017-07-10 02:35:39


以下是我的sql
select a.id,a.categoryname,count(*)total from Category a, PlanDatas b
where a.id=b.Categoryid and a.State=1 and a.type=1
GROUP BY a.id,a.categoryname

统计时, 表b 中有 a.id=b.Categoryid 资料时,才会统计次数
eg:
id categoryname total
1 aa 12
3 cc 13
4 dd 17
现在要求表 对应的 a.id , 表b 中,没有资料时,显示0,

需显示为
id categoryname total
1 aa 12
2 bb 0
3 cc 13
4 dd 17
...全文
183 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ginnnnnnnn 2017-07-10
  • 打赏
  • 举报
回复
select a.id,a.categoryname,count(b.Categoryid) total from Category a left join PlanDatas b on a.id=b.Categoryid where a.State=1 and a.type=1 GROUP BY a.id,a.categoryname
二月十六 2017-07-10
  • 打赏
  • 举报
回复
试试这个:
SELECT  a.id ,
a.categoryname ,
SUM(CASE WHEN b.Categoryid <> 0 THEN 1
ELSE 0
END) total
FROM Category a
LEFT JOIN PlanDatas b ON a.id = b.Categoryid
WHERE a.State = 1
AND a.type = 1
GROUP BY a.id ,
a.categoryname

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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