sql动态行转列的两种方法

2020-07-06 05:43:29易采站长站整理

第一种方法:

select *from ( select Url,case  when  Month=01 then  ‘1月’ when  Month=02 then ‘2月’ when  Month=03 then  ‘3月’ when  Month=04 then ‘4月’ when  Month=05 then  ‘5月’ when  Month=06 then ‘6月’ when  Month=07 then  ‘7月’ when  Month=08 then ‘8月’ when  Month=09 then  ‘9月’ when  Month=10 then ‘ 10月’ when  Month=11 then  ’11月’ when  Month=12 then ‘ 12月’


 end  month,Quality from  (


select Url,DATENAME(M,AuditingTime)Month,SUM(Quality) Quality from  tb_order as a left join  tb_WebSiteInfo as b on a.WebSiteInfoID=b.ID left join  tb_OrderList as c on c.OrderID=a.ID where AuditingTime>’2013-01-01′ and b.ID>0 and Auditing=2


group by Url,DATENAME(M,AuditingTime) )as h ) as hh


 pivot ( sum(Quality) for month in([1月],[2月],[3月],[4月],[5月],[6月],[7月],[8月],[9月],[10月],[11月],[12月])) as a

第二种方法:

declare @sql varchar(8000)


select @sql = isnull(@sql + ‘,’ , ”) + ‘[‘+CONVERT(varchar(7),AuditingTime,20)+’]’


from  tb_order as a left join  tb_WebSiteInfo as b on a.WebSiteInfoID=b.ID left join  tb_OrderList as c on c.OrderID=a.ID where AuditingTime>’2013-01-01′ and b.ID>0 and Auditing=2


group by CONVERT(varchar(7),AuditingTime,20) print @sql declare @sql2 varchar(8000)=” set @sql2=’ select *from (


select Url, CONVERT(varchar(7),AuditingTime,20) AuditingTime,SUM(Quality) Quality from  tb_order as a left join  tb_WebSiteInfo as b on a.WebSiteInfoID=b.ID left join  tb_OrderList as c on c.OrderID=a.ID where b.ID>0 and Auditing=2


group by Url, CONVERT(varchar(7),AuditingTime,20)


) as hh pivot (sum(Quality) for AuditingTime in (‘ + @sql + ‘)) b’


print @sql2


exec(@sql2)

您可能感兴趣的文章:mysql 行转列和列转行实例详解sql语句实现行转列的3种方法实例SQLServer行转列实现思路记录MySQL存储过程中使用动态行转列mssql 数据库表行转列,列转行终极方案Sql Server 2000 行转列的实现(横排)SQL查询语句行转列横向显示实例解析table 行转列的sql详解SQL行转列和列转行代码详解SQL基础教程之行转列Pivot函数

相关文章 大家在看