欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问这几句sql语句该如何写

更新时间: 2014-01-05 02:17:08 责任编辑: Author_N1

 

请教这几句SQL语句该怎么写
有一张电话费用表:
tel_no  cost
13800000000   38
13823400000   56
13800056400   88
13800230000   28
13802300000   18
13822220000   68
13844400000   98
13833330000   35
13822220000   31
13811110000   32

其中
13800000000 
13823400000  
13800056400   
13800230000   
13802300000为行政部的号码,13822220000  13844400000为财务部的电话号码,13833330000 
13822220000 13811110000 为销售部的号码, 我想对这张表进行分组得出下表:
电话号码  部门  费用
13800000000  行政部  38
13823400000  行政部  56
13800056400  行政部 88
13800230000  行政部 28
13802300000  行政部 18
13822220000  财务部 68
13844400000  财务部 98
13833330000  销售部 35
13822220000  销售部 31
13811110000  销售部 32
--参考方法--
create table 电话费用表(tel_no varchar(30),  cost int)

insert into 电话费用表
select '13800000000'   ,38 union all
select '13823400000'   ,56 union all
select '13800056400'   ,88 union all
select '13800230000'   ,28 union all
select '13802300000'   ,18 union all
select '13822220000'   ,68 union all
select '13844400000'   ,98 union all
select '13833330000'   ,35 union all
select '13822220000'   ,31 union all
select '13811110000'   ,32
go

select tel_no as 电话号码,
       case when tel_no in ('13800000000','13823400000','13800056400','13800230000','13802300000')
                 then '行政部'
            when tel_no in ('13822220000','13844400000')
                 then '财务部'
            when tel_no in ('13833330000','13822220000','13811110000')
                 then '销售部'   
       end as 部门 , 
       cost as 费用
from 电话费用表
/*
电话号码 部门 费用
13800000000 行政部 38
13823400000 行政部 56
13800056400 行政部 88
13800230000 行政部 28
13802300000 行政部 18
13822220000 财务部 68
13844400000 财务部 98
13833330000 销售部 35
13822220000 财务部 31
13811110000 销售部 32
*/

--参考方法--
最好建立一个字典表或者关联表,不然你的分类多了case when会死人的
--参考方法--
对你们的系统进行优化,新增一张电话部门表,存储部门中的电话,表的字段包含
dept_id tel_no

然后查询SQL

select b.dept_id,a.tel_no,SUM(a.cost) as total_cost from [电话费用表] a
inner join [部门电话表] b
on a.tel_no = b.tel_no
group by b.dept_id,a.tel_no

如果要显示部门名称再关联部门表


--参考方法--
不要用case when了,人数多的话,真的会要命的。。。建议使用三楼的算法,新增一张电话部门的表,然后语句就随便写写就可以了
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:08
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7962/
本文WWW.DOC100.NET DOC100.NET版权所有。