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

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

2014-01-03 
请教这几句SQL语句该怎么写有一张电话费用表:tel_nocost13800000000381382340000056138000564008813800230

请教这几句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了,人数多的话,真的会要命的。。。建议使用三楼的算法,新增一张电话部门的表,然后语句就随便写写就可以了

热点排行