多表连查SQL语句

nosuchtracter 2008-01-07 09:47:56
我有三个表。Content C,Catalog A,Branch B
现在要统计每个部门B所发布的信息数,俩种状态
SQL语句如下:
select B.Name,B.status,
sum(case when C.status <> 99 and A.Report = 1 then 1 else 0 end) pub_cnt,
sum(case when C.status = 1 and A.Report = 1 then 1 else 0 end) confirmed_cnt
from
Branch B
left outer join Content c
on B.Id = C.BranchId
left join Catalog A
on C.CatalogId = a.Id and B.Status<>99
and (datediff(s,C.commitdate,@EndTime)>0)
and (datediff(s,@StartTime,C.Commitdate)>0)
group by B.Name,B.status order by B.Name

但为什么B.Status<>99这句不起作用呢?会把表B种状态为99的也查询出来了
请问该如何写
...全文
96 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nosuchtracter 2008-01-07
  • 打赏
  • 举报
回复
haha
老想别的地方晕了头了
结贴
dobear_0922 2008-01-07
  • 打赏
  • 举报
回复
--try
select B.Name,B.status,
sum(case when C.status <> 99 and A.Report = 1 then 1 else 0 end) pub_cnt,
sum(case when C.status = 1 and A.Report = 1 then 1 else 0 end) confirmed_cnt
from
Branch B
left outer join Content c
on B.Id = C.BranchId
left join Catalog A
on C.CatalogId = a.Id
where B.Status<>99
and (datediff(s,C.commitdate,@EndTime)>0)
and (datediff(s,@StartTime,C.Commitdate)>0)
group by B.Name,B.status order by B.Name
wzy_love_sly 2008-01-07
  • 打赏
  • 举报
回复
...
where
B.Status<>99
and (datediff(s,C.commitdate,@EndTime)>0)
and (datediff(s,@StartTime,C.Commitdate)>0)
group by B.Name,B.status order by B.Name
chuifengde 2008-01-07
  • 打赏
  • 举报
回复
and B.Status<>99===>>Where B.Status<>99

34,838

社区成员

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

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