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

求一简单实用的SQL语句解决方法

2012-03-28 
求一简单实用的SQL语句有这样3张表1、部门表departIDdepartName1部门A2部门B......2、片区表areaIDareaName1

求一简单实用的SQL语句
有这样3张表
1、部门表
departID   departName
1                         部门A
2                         部门B
...
...

2、片区表
areaID       areaName
1                         浙江
2                         安徽
...
...

3、客流量
fluxID     flux       areaID   departID
1                 100           1               1
2                 200           1               2
3                 300           2               1
4                 400           2               2


想要得到的结果集如下:

第一列       第2列       第3列     (随着片区的记录数递增)

null             浙江         安徽
部门A           100           300
部门B           200           400


求一SQL



[解决办法]
Declare @S Varchar(1000)
Select @S = 'Select A.departName As 部门 '
Select @S = @S + ', SUM(Case C.areaName When ' ' ' + areaName + ' ' ' Then B.flux Else 0 End) As [ ' + areaName + '] '
From 片区表 Order By areaID
Select @S = @S + ' From 部门表 A Left Join 客流量 B On A.departID = B.departID Left Join 片区表 C On B.areaID = C.areaID Group By A.departName '
EXEC(@S)
[解决办法]
declare @sql varchar(8000)
set @sql= ' '

select @sql=@sql+ ',[ '+areaName+ ']=sum(case areaID when '+rtrim(areaID)+ ' then flux else 0 end) ' from 片区表 group by areaID,areaName

set @sql= 'select a.departName '+@sql+ ' from 部门表 a,客流量 b where a.departID=b.departID group by departName '

exec(@sql)

热点排行