bid name realprice buyidentity buytime
123 张三  2000      123456789  2000-01-02
113 张三  3500      123456789  1999-01-02
222 李四  4000      987654321  2002-08-02
333 王五  2000      555552222  1997-02-29注:bid唯一的ID号,name购买人姓名,realprice实际购买价格,buyidentity购买时身份证,buytiem购买时间.问题:
    查询sum(realprice)在哪个时间达到(小于或等于)6000,并列出所有内容
如:达到6000
113 张三  3500      123456789  1999-01-02
333 王五  2000      555552222  1997-02-29   SQL怎么写....

解决方案 »

  1.   


    ---构建环境
    drop table testcreate table Test
    (bid char(3),
    name char(10),
    Realprice float(8),
    buyidentity char(10),
    buytime datetime)insert test
    values('123','张三',2000,'123456789','2000-01-02')insert test
    values('113','张三',3500,'123456789','1999-01-02')insert test
    values('222','李四',4000,'987654321','2002-08-02')insert test
    values('333','王五',2000,'555552222','1997-02-28')
    ---最终SQL语句
    select A.* from test A
    where (Select sum(Realprice) from Test as B where B.buytime<=A.buytime)<=6000
      

  2.   

    忘记补充了...数据库为MYSQL不明天楼上这位大哥
    where B.buytime<=A.buytime得出来的结果一定是BUYTIME的递增吗?我这里的递增的意思是:从早到最近
      

  3.   

    如果我设置一个初始的日期,比如:从1999-01-02开始统计...
    SQL应该怎么写了....在线等啊...谢谢各位高手些了
      

  4.   

    select A.* 
    from test A
    where (Select sum(Realprice) from Test as B where B.buytime<=A.buytime)<=6000 
    order by A.buytime
    加order by A.buytime就可以保证早到最近的
      

  5.   

    MYSQL现在的版本也支持存储过程了吧?? 用游标循环处理
      

  6.   

    我还看不懂你的问题,希望我的帮你解决,查询sum(realprice)在哪个时间达到(小于或等于)6000,并列出所有内容这句话我看不太懂.
      

  7.   

    “查询sum(realprice)在哪个时间达到(小于或等于)6000,并列出所有内容”
    有问题吧? 应该是大于等于吧?
    先 select 姓名 from table  group by 姓名 得到所有人姓名
    然后用游标对姓名循环 
    Select sum(money) from table where 姓名 = 游标姓名
    if sum(money) >= 6000 then  // 如果是小于的话就是  <=
    Select * into #tables From table where 姓名 = 游标姓名
    这样就把所有的符合条件的数据都放到了临时表 #tables 里面 ,最后来
    Select * From #tables就是全部符合条件的数据