当前位置: 代码迷 >> Sql Server >> 列转行有关问题
  详细解决方案

列转行有关问题

热度:27   发布时间:2016-04-24 09:39:14.0
列转行问题

有sql如下,实现了每月一列,如何将这些列转为行查询呢,请教
select WType,
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='01' then 1 else 0 end) as '1月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='02' then 1 else 0 end) as '2月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='03' then 1 else 0 end) as '3月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='04' then 1 else 0 end) as '4月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='05' then 1 else 0 end) as '5月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='06' then 1 else 0 end) as '6月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='07' then 1 else 0 end) as '7月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='08' then 1 else 0 end) as '8月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='09' then 1 else 0 end) as '9月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='10' then 1 else 0 end) as '10月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='11' then 1 else 0 end) as '11月',
sum(case when substring(convert(varchar(7),FXDate,120),6,2)='12' then 1 else 0 end) as '12月'
from ZangWeiJi  where year(FXDate)='2014' 
group by WType;

先谢谢老师

------解决思路----------------------

select WType,convert(varchar(7),FXDate,120),6,2) as yf,count(*) as qty
from ZangWeiJi  where year(FXDate)='2014' 
group by WType,convert(varchar(7),FXDate,120),6,2) 
order by WType,yf

------解决思路----------------------
select WType,
cast(month(FXDate) as varchar(10)) + '月' as Months,
count(1) as Cnt
from ZangWeiJi  
where FXDate>='2014-1-1' 
and FXDate<'2015-1-1' 
group by WType,
cast(month(FXDate) as varchar(10)) + '月'
  相关解决方案