急求:统计数据(一解决即结贴)

liangyubiao 2008-02-20 02:21:50
如何统计出数据:
业务表 T_BUSINESS里有数据: POSITION中12代表出证,03未出证
DEPARTID POSITION ID
007514637 12 080131002
00751440x 03 080131003
00751440x 12 080131004
00751440x 12 080131001

部门T_DEPARTMENT 里有:
ID DEPARTNAME
007514637 文管局
00751440x 交通局
现在想通过业务表里统计出数据:
部门名称,所有业务,已出证业务
请问怎么实现啊??各位。


SELECT D.NAME, COUNT(*) AS 受理业务,(SELECT COUNT(*) FROM T_BUSINESS INNER JOIN T_DEPARTMENT ON
T_BUSINESS.DEPARTID=T_DEPARTMENT.ID WHERE LASTPOSITIONID=12) AS 出证
FROM T_BUSINESS B INNER JOIN T_DEPARTMENT D ON B.DEPARTID=D.ID
GROUP BY D.ID,D.NAME
这里统计出来的结果有
部门名称 受理业务 出证
文管局 3 3
交通局 1 3
结果是出证的统计了所有的。我要让它每个局只统计本局的。就像受理业务那样。。请各位帮帮忙。太感谢了
...全文
77 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zefuzhang2008 2008-02-24
  • 打赏
  • 举报
回复
select a.departname 部门名称,b.cnts 受理业务,c.cnt 出证
from T_Department a,(select departid,count(1)cnts from T_Business group by DEPARTID)b,
(select departid,cnt=count(1) from T_Business where position='12' group by DEPARTID)c
where a.ID=b.departid and a.id=c.departid
pt1314917 2008-02-24
  • 打赏
  • 举报
回复

declare @T_Business table (DepartId varchar(9),Position varchar(2),Id varchar(9))
declare @T_Department table(Id varchar(9),Departname varchar(6))
insert into @T_Business
select '007514637', '12', '080131002' union all
select '00751440x', '03', '080131003' union all
select '00751440x', '12', '080131004' union all
select '00751440x', '12', '080131001'

insert into @T_Department
select '007514637', '文管局' union all
select '00751440x', '交通局'


select a.departname 部门名称,b.cnts 受理业务,c.cnt 出证
from @T_Department a,(select departid,count(1)cnts from @T_Business group by DEPARTID)b,
(select departid,cnt=count(1) from @T_Business where position='12' group by DEPARTID)c
where a.ID=b.departid and a.id=c.departid

dawugui 2008-02-24
  • 打赏
  • 举报
回复
让它每个局只统计本局的

SELECT D.NAME, COUNT(*) AS 受理业务,(SELECT COUNT(*) FROM T_BUSINESS INNER JOIN T_DEPARTMENT ON 
T_BUSINESS.DEPARTID=T_DEPARTMENT.ID WHERE LASTPOSITIONID=12 and DEPARTNAME = '某个局') AS 出证
FROM T_BUSINESS B INNER JOIN T_DEPARTMENT D ON B.DEPARTID=D.ID and DEPARTNAME = '某个局'
GROUP BY D.ID,D.NAME
victorcai2006 2008-02-24
  • 打赏
  • 举报
回复
依然统计问题,COUNT+GROUP BY

select b.DEPARTNAME ,count(1) as 受理业务,
sum(case POSITION when '12' then 1 else 0 end) as 出证
from T_BUSINESS a inner join T_DEPARTMENT b on a.DEPARTID = b.ID
group by b.ID,b.DEPARTNAME


可以结贴了。。。。
-狙击手- 2008-02-20
  • 打赏
  • 举报
回复
declare @T_Business table (DepartId varchar(9),Position varchar(2),Id varchar(9))
declare @T_Department table(Id varchar(9),Departname varchar(6))
insert into @T_Business
select '007514637', '12', '080131002' union all
select '00751440x', '03', '080131003' union all
select '00751440x', '12', '080131004' union all
select '00751440x', '12', '080131001'

insert into @T_Department
select '007514637', '文管局' union all
select '00751440x', '交通局'


select b.DEPARTNAME as 部门名称,count(1) as 受理业务,
sum(case POSITION when '12' then 1 else 0 end) as 出证
from @T_BUSINESS a
right join @T_DEPARTMENT b on a.DEPARTID = b.ID
group by b.ID,b.DEPARTNAME

/*
部门名称 受理业务 出证
------ ----------- -----------
交通局 3 2
文管局 1 1

(所影响的行数为 2 行)
*/
谁是谁的谁 2008-02-20
  • 打赏
  • 举报
回复

declare @T_Business table (DepartId varchar(9),Position varchar(2),Id varchar(9))
declare @T_Department table(Id varchar(9),Departname varchar(6))
insert into @T_Business
select '007514637', '12', '080131002' union all
select '00751440x', '03', '080131003' union all
select '00751440x', '12', '080131004' union all
select '00751440x', '12', '080131001'

insert into @T_Department
select '007514637', '文管局' union all
select '00751440x', '交通局'

select * from @T_Business
select * from @T_Department

select a.Departname,b.受理业务,c.出证
from @T_Department a,
(select departid ,count(position) as 受理业务 from @T_Business group by departid) b,
(select departid ,count(position) as 出证 from @T_Business where position ='12' group by departid)c
where a.id=b.departid and b.departid*=c.departid
/*
(所影响的行数为 4 行)


(所影响的行数为 2 行)

DepartId Position Id
--------- -------- ---------
007514637 12 080131002
00751440x 03 080131003
00751440x 12 080131004
00751440x 12 080131001

(所影响的行数为 4 行)

Id Departname
--------- ----------
007514637 文管局
00751440x 交通局

(所影响的行数为 2 行)

Departname 受理业务 出证
---------- ----------- -----------
交通局 3 2
文管局 1 1

(所影响的行数为 2 行)
*/
冷箫轻笛 2008-02-20
  • 打赏
  • 举报
回复

select b.DEPARTNAME ,count(1) as 受理业务,
sum(case POSITION when '12' then 1 else 0 end) as 出证
from T_BUSINESS a inner join T_DEPARTMENT b on a.DEPARTID = b.ID
group by b.ID,b.DEPARTNAME
pt1314917 2008-02-20
  • 打赏
  • 举报
回复

select a.departname 部门名称,b.cnts 受理业务,c.cnt 出证
from T_DEPARTMENT a,(select departid,count(1)cnts from T_BUSINESS group by DEPARTID)b,
(select departid,cnt=sum(case position when '12' then 1 else 0 end) from T_BUSINESS)c
where a.ID=b.departid and a.id=c.departid

22,299

社区成员

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

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