/**/
create table test
(
id int identity(1,1),
bank_name varchar(20),--银行名称
start_date datetime,--开始时间
end_date  datetime,--结束时间
je int --金额
)
insert into test select'a','2006-1-1','2006-2-1',1000
insert into test select'a','2006-1-1','2006-2-1',2000
insert into test select'b','2006-1-1','2006-2-1',3000
insert into test select'b','2006-1-1','2006-2-1',4000----------------------------------------------------怎样查询出start_date和end_date之间的数据,并且按照bank_name分组例如:要查询出大于start_date并且小于end_date的所有数据,并且按照rq分组
drop table test

解决方案 »

  1.   

    改正:
    例如:要查询出大于start_date并且小于end_date的所有数据,并且按照bank_name分组
      

  2.   

    declare @st datetime
    declare @et datetime
    set @st='2005-01-01'
    set @et='2007-01-01'select bank_name,sum(je) as je from test where start_date>@st and end_date<@et group by bank_name--这样?
      

  3.   


    "例如:要查询出大于start_date并且小于end_date的所有数据,并且按照rq分组"
    你所谓的 start_date和end_date是指表中字段,还是你指定的变量值?若是前者,那么之间的数据又是指什么?
      

  4.   

    select bank_name from test
    where '日期' between start_date and end_date
    group by bank_name
      

  5.   

    declare @dt1 as datetime
    declare @dt2 as datetime
    set @dt1 = '2006-1-1'
    set @dt2 = '2006-2-1'select bank_name as 银行名称, sum(je) as 金额 
    from test 
    where start_date>=@dt1 and start_date <= @dt2 and end_date>=@dt1 and end_date <= @dt2
    group by bank_name
      

  6.   

    declare @dt1 as datetime
    declare @dt2 as datetime
    select @dt1 = min(start_date) from test
    select @dt2 = max(end_date) from testselect bank_name as 银行名称, sum(je) as 金额 
    from test 
    where start_date>=@dt1 and start_date <= @dt2 and end_date>=@dt1 and end_date <= @dt2
    group by bank_name
      

  7.   


    declare @date1 as datetime
    set  @date1 = '2006-12-20'
    select bank_name,sum(je) as je 
    from test where @date1 between (start_date and end_date)
    group by bank_name
      

  8.   

    select bank_name,sum(je) as je 
    from test where @date1 between (start_date and end_date)
    group by bank_name
    select * from test where @date1 between (start_date and end_date)
    order by bank_name