刚才那个帖子,我想再加一列!
我有两个表,一个data表存文章,一个user表存人员信息
类似这样
data表
charid(文章id) input(上报人) status(1发表、0上报)topicid(栏目id)
1 AA 0 硬件
2 BB 1 软件
3 CC 1 软件
4 DD 1 软件
5 EE 1 硬件
6 FF 0 耗材
7 GG 0 周边
user
userid(用户id) corpid(公司名) headuser(上级人员)
AA IBM null
BB null AA
CC SUN null
DD null CC
EE ABC null
FF null EE
GG LTD null
要得到的视图是
公司名 上报数量 发表数量 栏目
IBM 1 1 软件
IBM 1 0 硬件
SUN 2 2 软件
ABC 1 1 硬件
ABC 1 0 耗材
LTD 1 0 周边
[解决办法]
select t1.corpid,
sum(case status when 0 then 1 else 0 end) as 上报数量,
sum(case status when 1 then 1 else 0 end) as 发表数量,
t1.topicid
from user t1, data t2
where t1.userid=t2.input
group by t1.corpid, t1.topicid
[解决办法]
Select
C.corpid,
Count(C.corpid) As 上报数量,
SUM(Case D.status When 1 Then 1 Else 0 End) As 发表数量,
D.topicid
From
(
Select corpid, userid From [user] Where headuser Is Null
Union
Select A.corpid, B.userid From [user] A Inner Join [user] B On A.userid = B.headuser
) C
Left Join
data D
On C.userid =D.input
Group By
C.corpid,
D.topicid
[解决办法]
select
isnull(b.corpid,c.corpid) as 公司名,
count(distinct a.charid) as 上报数量,
sum(a.status) as 发表数量, --投机取巧一下
a.topicid
from data a inner join user b
on a.input=b.userid
left join user c on b.headuser=c.userid
group by isnull(b.corpid,c.corpid),a.topicid
order by count(distinct a.charid) desc ,sum(a.status) desc