Unpivot列传行的应用

-- =============================================  
-- Author:  <Author,,Name>  
-- Create date: <Create Date,,>  
-- Description: <Description,,>  
--  [weixin_health_screen_disease] 37385  
-- =============================================  
CREATE PROCEDURE [dbo].[weixin_health_screen_disease]  
 @kid int  
AS  
BEGIN  
 SET NOCOUNT ON;  
 /*  
 declare @bgndate varchar(10), @enddate varchar(10), @year int  
   
 if  MONTH(GETDATE()) >= 9  
     begin  
     set @year= (select CAST( YEAR(GETDATE()) as int))  
     set @bgndate = (select CAST( YEAR(GETDATE()) as varchar) + '-09-01')  
     set @enddate = (select CAST( YEAR(DATEADD(yy,1,GETDATE())) as varchar) + '-07-01')  
     end  
   else   
        begin   
         set @year= (select CAST( YEAR(DATEADD(yy,-1,GETDATE())) as varchar))  
        set @bgndate = (select CAST( YEAR(DATEADD(yy,-1,GETDATE())) as varchar) + '-09-01')  
        set @enddate = (select CAST( YEAR(GETDATE()) as varchar) + '-07-01')  
        end   
          
     select  ID,bgndate, LEFT( CONVERT(varchar(10),bgndate,120),7) bgnmonth ,disease  
       into #t  
      from BasicData..weixin_doctor_disease_record  
     where kid = @kid  
       and bgndate >= @bgndate  
       and bgndate < @enddate      
        
      select 0 code, '获取成功' info    
       
      create table #t1 (bgnmonth varchar(10),cnt int)  
        
     insert into #t1(bgnmonth,cnt) select cast(@year as varchar(4)) + '-09', COUNT(ID) cnt from #t t where bgnmonth = cast(@year as varchar(4)) + '-09'   
     insert into #t1(bgnmonth,cnt) select cast(@year as varchar(4)) + '-10', COUNT(ID) cnt from #t t where bgnmonth =  cast(@year as varchar(4)) + '-10'   
     insert into #t1(bgnmonth,cnt) select cast(@year as varchar(4)) + '-11', COUNT(ID) cnt from #t t where bgnmonth =  cast(@year as varchar(4)) + '-11'   
     insert into #t1(bgnmonth,cnt) select cast(@year as varchar(4)) + '-12', COUNT(ID) cnt from #t t where bgnmonth =  cast(@year as varchar(4)) + '-12'    
     insert into #t1(bgnmonth,cnt) select cast((@year+1) as varchar(4)) + '-01' , COUNT(ID) cnt from #t t where bgnmonth =  cast((@year+1) as varchar(4)) + '-01'   
     insert into #t1(bgnmonth,cnt) select cast((@year+1) as varchar(4)) + '-02' , COUNT(ID) cnt from #t t where bgnmonth = cast((@year+1) as varchar(4)) + '-02'   
     insert into #t1(bgnmonth,cnt) select cast((@year+1) as varchar(4)) + '-03' , COUNT(ID) cnt from #t t where bgnmonth = cast((@year+1) as varchar(4)) + '-03'  
     insert into #t1(bgnmonth,cnt) select cast((@year+1) as varchar(4)) + '-04' , COUNT(ID) cnt from #t t where bgnmonth = cast((@year+1) as varchar(4)) + '-04'   
     insert into #t1(bgnmonth,cnt) select cast((@year+1) as varchar(4)) + '-05' , COUNT(ID) cnt from #t t where bgnmonth = cast((@year+1) as varchar(4)) + '-05'   
     insert into #t1(bgnmonth,cnt) select cast((@year+1) as varchar(4)) + '-06' , COUNT(ID) cnt from #t t where bgnmonth = cast((@year+1) as varchar(4)) + '-06'   
     insert into #t1(bgnmonth,cnt) select cast((@year+1) as varchar(4)) + '-07' , COUNT(ID) cnt from #t t where bgnmonth = cast((@year+1) as varchar(4)) + '-07'   
     insert into #t1(bgnmonth,cnt) select cast((@year+1) as varchar(4)) + '-08' , COUNT(ID) cnt from #t t where bgnmonth = cast((@year+1) as varchar(4)) + '-08'   
       
  
       
      select  bgnmonth,cnt  
      from #t1  
      order by bgnmonth  
        
      select t.bgnmonth, COUNT(ID) cnt  
      from  
      #t t   
      group by  t.bgnmonth   
      order by t.bgnmonth   
       
      select t.disease, COUNT(ID) cnt  
      from  
      #t t   
      group by  t.disease  
      order by t.disease  
       */  
  
  select 0 code, '获取成功' info  
  
  Declare @springday datetime  
  Select @springday = sdate From BasicData.dbo.Springday Where term = Cast(DATEPART(yy, GETDATE()) as Varchar(10)) + '-0'  
  
  Select Convert(Varchar(7), cdate, 120) bgnmonth, disease, cnt  
    Into #t  
    From mcapp..record_mc_kid_day  
    Unpivot(cnt for disease In (fs, ks, hlfy, lbt, pz, fx, hy)) a  
    Where kid = @kid   
    and cdate >= Case When GETDATE() < @springday Then Cast(DATEPART(yy, GETDATE()) - 1 as Varchar(10)) + '-09-01'  
                        When GETDATE() >= Cast(DATEPART(yy, GETDATE()) as Varchar(10)) + '-09-01' Then Cast(DATEPART(yy, GETDATE()) as Varchar(10)) + '-09-01'  
                        Else @springday End  
      and cdate < GETDATE()  
  
  Select bgnmonth, Sum(cnt) cnt  
    From #t  
    Group by bgnmonth  
    
  Select Case disease When 'fs' Then '发烧' When 'ks' Then '咳嗽' When 'hlfy' Then '喉咙发炎' When 'lbt' Then '流鼻涕'   
                      When 'pz' Then '皮疹' When 'fx' Then '腹泻' When 'hy' Then '红眼病' Else '其它' End disease, Sum(cnt) cnt  
    From #t  
    Group by disease  
  
END  
  

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值