create table test
(
id  int,---编号
sl  int,---数量
rq  datetime ---日期
)insert into test select 10, 100,'2002-1-1 6:00:00'
insert into test select 10, 101,'2002-1-1 6:10:00'
insert into test select 10, 100,'2002-1-1 6:20:00'
insert into test select 10, 100,'2002-1-1 6:30:00'
insert into test select 10, 100,'2002-1-1 6:40:00'
insert into test select 10, 100,'2002-1-1 6:50:00'
insert into test select 10, 100,'2002-1-1 7:00:00'insert into test select 10, 100,'2002-1-1 23:10:00'
insert into test select 10, 100,'2002-1-1 23:20:00'
insert into test select 10, 100,'2002-1-1 23:30:00'
insert into test select 10, 100,'2002-1-1 23:40:00'
insert into test select 10, 100,'2002-1-1 23:50:00'
insert into test select 10, 100,'2002-1-2 00:00:00'insert into test select 10, 100,'2002-1-2 00:10:00'
insert into test select 10, 100,'2002-1-2 00:20:00'
insert into test select 10, 100,'2002-1-2 00:30:00'
insert into test select 10, 100,'2002-1-2 00:40:00'
insert into test select 10, 100,'2002-1-2 00:50:00'
insert into test select 10, 100,'2002-1-2 01:00:00'
insert into test select 10, 100,'2002-1-2 05:10:00'
insert into test select 10, 100,'2002-1-2 05:20:00'
insert into test select 10, 100,'2002-1-2 05:30:00'
insert into test select 10, 100,'2002-1-2 05:40:00'
insert into test select 10, 100,'2002-1-2 05:50:00'
insert into test select 10, 100,'2002-1-2 06:00:00'----------------------------------------------------------------------------------------------------insert into test select 10, 102,'2002-1-2 6:10:00'
insert into test select 10, 100,'2002-1-2 6:20:00'
insert into test select 10, 100,'2002-1-2 6:30:00'
insert into test select 10, 100,'2002-1-2 6:40:00'
insert into test select 10, 100,'2002-1-2 6:50:00'
insert into test select 10, 100,'2002-1-2 7:00:00'insert into test select 10, 100,'2002-1-2 23:10:00'
insert into test select 10, 100,'2002-1-2 23:20:00'
insert into test select 10, 100,'2002-1-2 23:30:00'
insert into test select 10, 100,'2002-1-2 23:40:00'
insert into test select 10, 100,'2002-1-2 23:50:00'
insert into test select 10, 100,'2002-1-3 00:00:00'insert into test select 10, 100,'2002-1-3 00:10:00'
insert into test select 10, 100,'2002-1-3 00:20:00'
insert into test select 10, 100,'2002-1-3 00:30:00'
insert into test select 10, 100,'2002-1-3 00:40:00'
insert into test select 10, 100,'2002-1-3 00:50:00'
insert into test select 10, 100,'2002-1-3 01:00:00'
insert into test select 10, 100,'2002-1-2 05:10:00'
insert into test select 10, 100,'2002-1-2 05:20:00'
insert into test select 10, 100,'2002-1-2 05:30:00'
insert into test select 10, 100,'2002-1-2 05:40:00'
insert into test select 10, 100,'2002-1-2 05:50:00'
insert into test select 10, 100,'2002-1-2 06:00:00'
select * from test where rq between (select cast(floor(cast(cast('2002-01-01' as datetime) as float))+0.255 as datetime))and (select cast(floor(cast(cast('2002-01-01' as datetime) as float))+1.25 as datetime))/*
我想得到这样的结果,我用分割线分开了,分割线以上是 2002-01-01的数据总和,分割线以下是2002-01-02的数据总和,其实就是统计每天从6:10到第二天6:00的sl总和。查询已经完成,就是不知道如何分组。日期                             sl2002-01-01                      24012002-01-02                      2402                   */drop table test

解决方案 »

  1.   


    create table test
    (
    id int,---编号
    sl int,---数量
    rq datetime ---日期
    )insert into test select 10, 100,'2002-1-1 6:00:00'
    insert into test select 10, 101,'2002-1-1 6:10:00'
    insert into test select 10, 100,'2002-1-1 6:20:00'
    insert into test select 10, 100,'2002-1-1 6:30:00'
    insert into test select 10, 100,'2002-1-1 6:40:00'
    insert into test select 10, 100,'2002-1-1 6:50:00'
    insert into test select 10, 100,'2002-1-1 7:00:00'insert into test select 10, 100,'2002-1-1 23:10:00'
    insert into test select 10, 100,'2002-1-1 23:20:00'
    insert into test select 10, 100,'2002-1-1 23:30:00'
    insert into test select 10, 100,'2002-1-1 23:40:00'
    insert into test select 10, 100,'2002-1-1 23:50:00'
    insert into test select 10, 100,'2002-1-2 00:00:00'insert into test select 10, 100,'2002-1-2 00:10:00'
    insert into test select 10, 100,'2002-1-2 00:20:00'
    insert into test select 10, 100,'2002-1-2 00:30:00'
    insert into test select 10, 100,'2002-1-2 00:40:00'
    insert into test select 10, 100,'2002-1-2 00:50:00'
    insert into test select 10, 100,'2002-1-2 01:00:00'
    insert into test select 10, 100,'2002-1-2 05:10:00'
    insert into test select 10, 100,'2002-1-2 05:20:00'
    insert into test select 10, 100,'2002-1-2 05:30:00'
    insert into test select 10, 100,'2002-1-2 05:40:00'
    insert into test select 10, 100,'2002-1-2 05:50:00'
    insert into test select 10, 100,'2002-1-2 06:00:00'
    insert into test select 10, 102,'2002-1-2 6:10:00'
    insert into test select 10, 100,'2002-1-2 6:20:00'
    insert into test select 10, 100,'2002-1-2 6:30:00'
    insert into test select 10, 100,'2002-1-2 6:40:00'
    insert into test select 10, 100,'2002-1-2 6:50:00'
    insert into test select 10, 100,'2002-1-2 7:00:00'insert into test select 10, 100,'2002-1-2 23:10:00'
    insert into test select 10, 100,'2002-1-2 23:20:00'
    insert into test select 10, 100,'2002-1-2 23:30:00'
    insert into test select 10, 100,'2002-1-2 23:40:00'
    insert into test select 10, 100,'2002-1-2 23:50:00'
    insert into test select 10, 100,'2002-1-3 00:00:00'insert into test select 10, 100,'2002-1-3 00:10:00'
    insert into test select 10, 100,'2002-1-3 00:20:00'
    insert into test select 10, 100,'2002-1-3 00:30:00'
    insert into test select 10, 100,'2002-1-3 00:40:00'
    insert into test select 10, 100,'2002-1-3 00:50:00'
    insert into test select 10, 100,'2002-1-3 01:00:00'
    insert into test select 10, 100,'2002-1-3 05:10:00'
    insert into test select 10, 100,'2002-1-3 05:20:00'
    insert into test select 10, 100,'2002-1-3 05:30:00'
    insert into test select 10, 100,'2002-1-3 05:40:00'
    insert into test select 10, 100,'2002-1-3 05:50:00'
    insert into test select 10, 100,'2002-1-3 06:00:00'select CONVERT(varchar(10),rq,120) as rq,SUM(sl) as sumsl from(
    select case when 0<= DATEPART(HH,rq) and DATEPART(HH,rq)<6
    then DATEADD(HH,-7,rq) else rq end as rq,sl from test)a
    where CONVERT(varchar(10),rq,120) between '2002-01-01' and  '2002-01-02'
    group by CONVERT(varchar(10),rq,120)/*
    rq sumsl
    2002-01-01 2401
    2002-01-02 2402
    */
      

  2.   

    如果你确认你的查询语句没错,可以用以下语句,不过你的描述和你的结果好像不一致
    select convert(varchar(10),rq,120) as 日期,sum(sl) as 数量
    from(
    select * from test where rq between (select cast(floor(cast(cast('2002-01-01' as datetime) as float))+0.255 as datetime))and (select cast(floor(cast(cast('2002-01-01' as datetime) as float))+1.25 as datetime))
    ) t
    group by convert(varchar(10),rq,120)
      

  3.   

    select convert(varchar(10),dateadd(mi,-370,rq),120) as rq,sum(sl) as sl from test
    where convert(varchar(5),rq,108)  not between '06:01' and '06:09'
    group by convert(varchar(10),dateadd(mi,-370,rq),120)/**
    rq         sl
    ---------- -----------
    2001-12-31 100
    2002-01-01 2401
    2002-01-02 2402(3 行受影响)
    **/