数据库中的数据如图所示:
取数据的规则:
1、以“2012-02-27  11:30:00.000”到“2012-02-27  12:30:00.000”之间记录的“Qty”的平均值,做为“2012-02-27  12:00:00.000”时间点的值。2、以“2012-02-27  12:30:00.000”到“2012-02-27  13:30:00.000”之间记录的“Qty”的平均值,做为“2012-02-27  13:00:00.000”时间点的值。3、以“2012-02-27  00:30:00.000”到“2012-02-27  01:30:00.000”之间记录的“Qty”的平均值,做为“2012-02-27  01:00:00.000”时间点的值。4、以“2012-02-27  23:30:00.000”到“2012-02-28  00:30:00.000”之间记录的“Qty”的平均值,做为“2012-02-28  00:00:00.000”时间点的值。问题:传入某天“2012-02-27”,怎么获取该天“24小时”整点时候的数据呢?

解决方案 »

  1.   

    期待大侠,高级SQL,高难度事件。
      

  2.   

    --如果确定秒都为0
    update tb set qty = (select avg(qty) from tb where abs(datediff(mi , datime , t.datime)) <= 30) from tb t where datepart(mi,datime) = 30--如果不能确定秒都为0
    update tb set qty = (select avg(qty) from tb where abs(datediff(mi , datime , t.datime)) <= 30) from tb t where datepart(mi,datime) = 30 and datepart(ss,datime) = 0
      

  3.   


    非常3Q...
    “Update”岂不是把表中的数据都改了,“Select”可以么?
      

  4.   

    我后面加了条件,只改符合调价的即可.where datepart(mi,datime) = 30datepart(mi,datime) = 30 and datepart(ss,datime) = 0
      

  5.   


    --问题:传入某天“2012-02-27”,怎么获取该天“24小时”整点时候的数据呢?
    declare @date datetimeset @date='2012-02-27'
    select avg(Qty) as Qty from tb 
    where DATime between @date and dateadd(dd,1,@date)