表A 
    id  ,tradetime(交易日期),trademoney(交易金额) 
 我想取出这样的列
   ID  ,lasttime(最后交易日期) ,allmoney(总交易金额)  monthmoney(本月交易金额) 怎么写

解决方案 »

  1.   

    SELECT
        ID,
        MAX(tradetime)  as lasttime,
        SUM(trademoney) as allmoney,
        SUM(CASE DATEDIFF(MM,tradetime,GETDATE()) 
               WHEN 0 THEN trademoney 
               ELSE 0 
            END) as monthmoney
    FROM
        表A 
    GROUP BY
        ID
      

  2.   

    Select ID,[最后交易日期]=max(交易日期),[总交易金额]=sum(交易金额),
           [本月交易金额]=(Select Sum(交易金额) from 表名 Where 表名.ID=a.ID AND month(交易日期)=month(getdate()) Group BY ID)
           From 表名 a Group By ID
      

  3.   

    Select ID,[最后交易日期]=max(交易日期),[总交易金额]=sum(交易金额),
           [本月交易金额]=Sum(交易金额)
           From 表名 a Group By ID,month(交易日期)
      

  4.   

    SELECT ID,
    [最后交易日期]=MAX(tradetime) ,
    [总交易金额]=SUM(trademoney),
    [本月交易金额]= sum(case when convert(varchar(7),tradetime,120)=convert(varchar(7),getdate(),120)
    then  trademoney else 0 end)
    FROM    table1 
    GROUP BY
    ID
      

  5.   

    动不动就proc
    create table trad(id int identity(1,1) ,tradetime datetime,trademoney int)
    insert into trad select '2007-01-30',1000
    union all select '2007-1-30',1000
    union all select '2007-1-31',1000
    union all select '2007-1-30',1040
    union all select '2007-1-31',1200
    union all select '2007-1-31',1000
    union all select '2007-1-30',1900
    union all select '2007-1-31',1000
    union all select '2007-2-1',1000
    union all select '2007-2-12',1200
    union all select '2007-2-20',1000
    union all select '2007-2-10',1000
    union all select '2007-2-28',1000select lasttime,(select sum(trademoney) from trad)allmoney,monthmoney 
    from(select max(tradetime) lasttime,sum(trademoney)'monthmoney' 
    from trad group by Month(tradetime)) a
      

  6.   

    select id,max交易日期'最后交易日期',sum交易金额'总交易金额',
    select sum(b.交易金额) from 表 b where b.交易日期 between 月初 and 月末 as 本月交易金额
    frm 表 Group By id
      

  7.   

    本月:
    select lasttime,(select sum(trademoney) from trad)allmoney,monthmoney 
    from(select max(tradetime) lasttime,sum(trademoney)'monthmoney' 
    from trad where Month(tradetime)=Month(getdate())
    group by Month(tradetime))a
      

  8.   

    简化:
    select max(tradetime)'lasttime',(select sum(trademoney) from trad)'allmoney',sum(trademoney)'monthmoney' 
    from trad where Month(tradetime)=Month(getdate())
      

  9.   

    测试:
    select max(tradetime)'lasttime',(select sum(trademoney) from trad)'allmoney',sum(trademoney)'monthmoney' 
    from trad where CONVERT(varchar(6), tradetime,112)=CONVERT(varchar(6), getdate(),112)