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

行列转换数据统计(月份)SQL请问

2012-03-22 
行列转换数据统计(月份)SQL请教大家好!如下数据表 COCO_CustomerIDCO_DateCO_QtyA2011-10-21200B2011-11-5

行列转换数据统计(月份)SQL请教
大家好!
  如下数据表 CO
  CO_CustomerID CO_Date CO_Qty
  A 2011-10-21 200
  B 2011-11-5 100
  C 2011-11-21 160
  A 2011-11-21 56
  C 2011-11-28 600
  C 2011-12-8 3600

  ......

我想实现按客户年度2011全年月份统计出如下(无记录月份补为null):
  客户 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 客户合计
  A 200 56 256
  B 100 100  
  C 760 3600 4360  
......

用一个SQL语句能否实现按客户分组统计一年12个月数量总和?
谢谢  


[解决办法]

SQL code
select * from (select CO_CustomerID,convert(varchar(6),CO_Date,112) YM,SUMQty=SUM(CO_Qty)OVER(partition by CO_CustomerID),CO_Qty) tpivot (SUM(CO_Qty) for YM IN([201101],[201102],....[201112])) pvt
[解决办法]
SQL code
declare @sql varchar(8000)set @sql = 'select CO_CustomerID , 'select @sql = @sql + ' , sum(case convert(varchar(6),CO_Date,112) when ''' + convert(varchar(6),CO_Date,112) + ''' then CO_Qty else 0 end) [' + convert(varchar(6),CO_Date,112) + ']'from (select distinct convert(varchar(6),CO_Date,112) from tb) as aset @sql = @sql + ',sum(co_qty) as 合计 from tb group by CO_CustomerID'exec(@sql)
[解决办法]
+1
探讨
SQL code

declare @sql varchar(8000)
set @sql = 'select CO_CustomerID , '
select @sql = @sql + ' , sum(case convert(varchar(6),CO_Date,112) when ''' + convert(varchar(6),CO_Date,112) + ''' then CO……

热点排行
Bad Request.