create table 表(客户名称 varchar(1) ,欠款日期 datetime ,欠款金额 int)
insert into 表 select 
     'a',        '2006-1-1',    50 union select
     'a',        '2006-2-4',    40 union select
     'b',        '2006-3-27',   30 union select
     'b',        '2006-4-8',    40select 客户名称,(case  when datepart(dd,欠款日期)>25 then datepart(mm,欠款日期)+1 else datepart(mm,欠款日期) end ) as 月份,sum(欠款金额) as 欠款合计
from 表
group by 客户名称, (case  when datepart(dd,欠款日期)>25 then datepart(mm,欠款日期)+1 else datepart(mm,欠款日期) end )  
客户名称 月份          欠款合计        
---- ----------- ----------- 
a    1           50
a    2           40
b    4           70(所影响的行数为 3 行)

解决方案 »

  1.   


    select 客户名称,(case  when datepart(dd,欠款日期)>25 then convert(varchar,year(dateadd(mm,1,欠款日期)))+'-'+convert(varchar,month(dateadd(mm,1,欠款日期)))
     else convert(varchar,year(欠款日期))+'-'+convert(varchar,month(欠款日期)) end ) as 周期,sum(欠款金额) 欠款金额 from 表
    group by 客户名称,(case  when datepart(dd,欠款日期)>25 then convert(varchar,year(dateadd(mm,1,欠款日期)))+'-'+convert(varchar,month(dateadd(mm,1,欠款日期)))
     else convert(varchar,year(欠款日期))+'-'+convert(varchar,month(欠款日期)) end )
    order by 客户名称,周期
      

  2.   

    我想汇总每个月每个财务周期每个客户的欠款汇总(财务周期为上月的26号到本月的25结束)
    表:客户名称,欠款日期,欠款金额
         a        2006-1-1    50
         a        2006-2-4    40
         b        2006-3-27   30
         b        2006-4-8    40
     
    如果要的结束:客户名称,1,2, 3,4,欠款合计
                    a      50 40
                    b             70
    又要怎么搞
      

  3.   

    上面那个错了
    我想汇总每个月每个财务周期每个客户的欠款汇总(财务周期为上月的26号到本月的25结束)
    表:客户名称,欠款日期,欠款金额
         a        2006-1-1    50
         a        2006-2-4    40
         b        2006-3-27   30
         b        2006-4-8    40
     
    如果要的结束:客户名称,1,2, 3,4
                    a      50 40
                    b             70
    又要怎么搞
      

  4.   

    create table 表(客户名称 varchar(1) ,欠款日期 datetime ,欠款金额 int)
    insert into 表 select 
         'a',        '2006-1-1',    50 union select
         'a',        '2006-2-4',    40 union select
         'b',        '2006-3-27',   30 union select
         'b',        '2006-4-8',    40
    gocreate  function dbo.f_str(@str1  varchar(100))
    RETURNS varchar(8000)
    AS
    BEGIN
    DECLARE @re varchar(8000)
    SET @re=''
    SELECT @re=@re+' '+isnull(convert(varchar,欠款金额),'')
    FROM aa_temp
    WHERE 客户名称 =@str1  
    RETURN(STUFF(@re,1,1,''))

    ENDgoselect 客户名称,(case  when datepart(dd,欠款日期)>25 then convert(varchar,year(dateadd(mm,1,欠款日期)))+'-'+convert(varchar,month(dateadd(mm,1,欠款日期)))
     else convert(varchar,year(欠款日期))+'-'+convert(varchar,month(欠款日期)) end ) as 周期,sum(欠款金额) 欠款金额 into aa_temp from 表
    group by 客户名称,(case  when datepart(dd,欠款日期)>25 then convert(varchar,year(dateadd(mm,1,欠款日期)))+'-'+convert(varchar,month(dateadd(mm,1,欠款日期)))
     else convert(varchar,year(欠款日期))+'-'+convert(varchar,month(欠款日期)) end )
    goselect 客户名称,dbo.f_str(客户名称) from aa_temp
    group by 客户名称drop table aa_temp
    drop function dbo.f_str
    drop table 表
      

  5.   

    select 客户名,month(欠款日期),sum(欠款金额) from 表名 group by 客户名,month(欠款日期)