首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

刚才那个帖子,小弟我想再加一列

2012-01-07 
刚才那个帖子,我想再加一列!我有两个表,一个data表存文章,一个user表存人员信息类似这样data表charid(文章

刚才那个帖子,我想再加一列!
我有两个表,一个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

热点排行