求一简单实用的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)