rdate:注册时间,area 区号,phonenum号码,现在要查A,B表,所有在一段时间内注册的号码总数,如2012.1.1-2013.8.1,要求按地市区号,按年,月来分,统计总数,结果如下显示:
年 月 南京 苏州 泰州 连云港
2012 1 500 600 700 800
2012 2 100 200 600 100
这个里面知道应该要用到case 语句,但是怎么把表A,B的结果关联,然后按照年月地市来统计呢?mssql
年 月 南京 苏州 泰州 连云港
2012 1 500 600 700 800
2012 2 100 200 600 100
这个里面知道应该要用到case 语句,但是怎么把表A,B的结果关联,然后按照年月地市来统计呢?mssql
http://blog.csdn.net/hdhai9451/article/details/5026933
rdate/*注册时间*/ area phonenum
2013-1-1 南京 123
2012-12-1 大连 1234
表B存储的同样的数据,只是列名不一样,就叫brdate,barea, bphonenum
现在要统计某一段时间内即rdate如在12年1月到13年8月期间,注册的用户总数,要求按照年月地市来统计,统计出来的格式为:
年 月 南京 苏州 泰州 连云港
2012 1 500 600 700 800
2012 2 100 200 600 100
create table C(rdate datetime,area varchar(100),phonenum int)
insert into C
select rdate,area,phonenum from A where (条件表达式)
union all select brdate,barea, bphonenum from B where (条件表达式)
--动态生成sql 语句
declare @sql varchar(8000)
set @sql=''
select @sql=@sql + ',['+rtrim(area)+']=sum(case area when '''+rtrim(area)+''' then phonenum end)'
from C group by area
exec('select convert(varchar(7),rdate,120) as rdate'+@sql+'from C group by convert(varchar(7),rdate,120)' )
因为动态sql 没怎么接触。