• SQL Povit


    declare @yr int,@mth int,@logistics_code varchar(30),@fee_type varchar(50)
    
    select @yr=2014,@mth=1,@logistics_code='All',@fee_type='All'
    
    declare @index int,@from_date datetime,@to_date datetime,@strDateList varchar(180),@strSql varchar(1000)
    select @index=1,@strDateList='',@from_date=cast((ltrim(@yr)+'-'+ltrim(@mth)+'-1') as datetime)
    set @to_date=@from_date
    while @index<=12
    begin
        set @strDateList=@strDateList+'['+ltrim(year(@to_date))+'/'+ltrim(month(@to_date))+'],'
        set @to_date=dateadd(mm,1,@to_date)
        set @index=@index+1
    end
    
    create table #tbl
    (    
        ymth varchar(20),
        logistics_code varchar(30),
        fee money
    )
    
    insert into #tbl(ymth,logistics_code,fee)
    select ltrim(yr)+'/'+ltrim(mth),logistics_code,sum(fee) 
    from tbl_lis_FeeList where status='A'
    and
    ( 
        (yr=year(@from_date) and mth>=month(@from_date)) 
        or (yr=year(@to_date) and mth<=month(@to_date)) 
    )
    and logistics_code=case when @logistics_code<>'All' then @logistics_code else logistics_code end
    and fee_type=case when @fee_type<>'All' then @fee_type else fee_type end
    group by ltrim(yr)+'/'+ltrim(mth),logistics_code
    
    set @strDateList=substring(@strDateList,1,len(@strDateList)-1)
    set @strSql='select b.customer_name,'+@strDateList+' from 
    (
        select logistics_code,'+@strDateList+' from #tbl pivot(sum(fee) for ymth in('+@strDateList+')) as t
    ) as temp  
    left join tbl_lis_LogisticsProvider b on temp.logistics_code=b.logistics_code'
    
    exec (@strSql)
    
    /*
    select customer_name,temp.* from (
        select logistics_code,[2014/1],[2014/2],[2014/3],[2014/4],[2014/5],[2014/6],[2014/7],[2014/8],[2014/9],[2014/10],[2014/11],[2014/12] 
        from #tbl
        pivot(sum(fee) for ymth in([2014/1],[2014/2],[2014/3],[2014/4],[2014/5],[2014/6],[2014/7],[2014/8],[2014/9],[2014/10],[2014/11],[2014/12])) as t
    ) as temp
    left join tbl_lis_LogisticsProvider b on temp.logistics_code=b.logistics_code
    */
    
    drop table #tbl
    GO

  • 相关阅读:
    简单取色器
    第一部分实现功能:使用一个TabControl和一个Memo和TDictionary类实现文本临时存储
    功能设计笔记概要
    NFC与RFID简介
    【JAVA设计模式-第四课】观察者模式-屌丝求职记+新闻订阅
    「学习笔记」左偏树
    「SP122」STEVE
    「学习笔记」 FHQ Treap
    「整理」同余
    「目录」数论
  • 原文地址:https://www.cnblogs.com/myjacky/p/3624548.html
Copyright © 2020-2023  润新知