我需要将A表中的几列求和放在B表中
A表
Date 
value1
value2B表
Month
sum1
sum2我写成insert B (Month,sum1,sum2) select Date, sum(value1), sum(value2) where Date between ...肯定不对
这个日期应该咋办呢?

解决方案 »

  1.   

    我希望B表中Month的值是这个月的第一天(2011-5-1)这种。
      

  2.   


    -- 随手写的 试试看
    INSERT INTO B
    SELECT DATEPART(mm, [Date]) AS [Month], SUM(value1) AS sum1, SUM(value2) AS sum2
    FROM A
    GROUP BY DATEPART(mm, [Date])
      

  3.   

    现在不是B表的问题,是A表你要求日期是什么样的,A表的日期参与计算不同或者是不是条件,
    还有你那个B表Month是什么东西,如果B表那个没什么用的话insert B (Month,sum1,sum2) select DISTINCT(这个地方看这个日期没整没白你要干什么,如果只要2011-5-1那这地方可以写成'2011-05-01' 如果用表的数据,可以CONVERT先转换了), sum(value1), sum(value2)
      

  4.   

    AB表的日期都是DateTime类型的。
    A表每天一条数据,B表每月求和。
      

  5.   

    INSERT INTO B
    SELECT month([Date]) AS [Month], SUM(value1) AS sum1, SUM(value2) AS sum2
    FROM A
    GROUP BY month([Date])
      

  6.   

    对了,B表Month列什么格式?若日期格式,在按日期格式转换下。
      

  7.   

    AB表的Date Month都是DateTime类型的。
    A表每天一条数据,B表每月求和。
      

  8.   

    先用一个临时变,把A表中的 date 全部换成 每月的第一天,再
    select date,sum(),sum()
    from table
    group by date
      

  9.   

    还没出来啊,算了我给你写一个吧
    select cast(DATEPART(yyyy, date) as varchar(4))+'-'+cast(DATEPART(mm, date) as varchar(2))+'-1',sum(va),sum(vb) from a group by cast(DATEPART(yyyy, date) as varchar(4))+'-'+cast(DATEPART(mm, date) as varchar(2))
      

  10.   

    这个你改一下,就是select 部份,你把前面加上 insert B (Month,sum1,sum2)
    类似这个算了你帮改好算了
    insert B (Month,sum1,sum2) select cast(DATEPART(yyyy, date) as varchar(4))+'-'+cast(DATEPART(mm, date) as varchar(2))+'-1',sum(value1),sum(value2) from a group by cast(DATEPART(yyyy, date) as varchar(4))+'-'+cast(DATEPART(mm, date) as varchar(2))
    这个可以实现你要的,求每月的合,把每月的第一天写入新表