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

请教用sql怎样得到各部门的积分

2012-03-21 
请问用sql怎样得到各部门的积分有两个表info和unitinfo里有id(int),unitid(string),unitname(string),poin

请问用sql怎样得到各部门的积分
有两个表info和unit
info里有id(int),unitid(string),unitname(string),point(int)等字段!
unit里有unitid(string),unitname(string)字段

我想得到一个统计积分的sql语句,但问题是info表的unitid中是由多个id由逗号连接的,想问问怎么写这个sql

具体是这样的
info

1     1,2       开发部,销售部                   4
2     1,4       开发部,人事部                   2
3     3,4,5   行政部,人事部,财务部     3
4     1,3       开发部,行政部                   1

unit

1     开发部
2     销售部
3     行政部
4     人事部
5     财务部

要得到的积分排行结果是

1     开发部     7
2     人事部     5
3     销售部     4
4     行政部     4
5     财务部     3

那位大哥有兴趣帮忙看看!sql我学的不是很好,客户要得也比较急!所以麻烦大家了!



[解决办法]
create table info(id int,unitid varchar(50),unitcname varchar(50),jifen int)
go
insert info values(1, '1,2 ', '开发部,销售部 ',4)
insert info values(2, '1,4 ', '开发部,人事部 ',2)
insert info values(3, '3,4,5 ', '行政部,人事部,财务部 ',3)
insert info values(4, '1,3 ', '开发部,行政部 ',1)
go

create table unit(id int,cname varchar(20))
go
insert unit values(1, '开发部 ')
insert unit values(2, '销售部 ')
insert unit values(3, '行政部 ')
insert unit values(4, '人事部 ')
insert unit values(5, '财务部 ')
go

select id,cname,[积分结果]=(select sum(jifen) from info where charindex( ', '+ltrim(a.id)+ ', ', ', '+unitid+ ', ')> 0) from unit a
go

drop table info

drop table unit

--结果
id cname 积分结果
----------- -------------------- -----------
1 开发部 7
2 销售部 4
3 行政部 4
4 人事部 5
5 财务部 3

(所影响的行数为 5 行)
[解决办法]
楼上的可以。

一种实现技巧。

热点排行