房天下 > 房天下问答 > 业主生活 > 其他
  • sql 循环查询问题 解决追加100

    这样一个表的结构会员号 交易号 交易金额 交易时间001 11 1200 2009-10-01001 32 2000 2009-10-02001 30 500 2009-10-03006 52 2000 2009-10-02 006 212 400 2009-10-03003 61 500 2009-10-05003 32 1550 2009-10-06 003 33 300 2009-10-10 007 29 320 2009-10-21007 31 520 2009-10-12007 93 1000 2009-10-11007 21 250 2009-10-24007 35 1000 2009-10-09。。。这个表主要就是这个会员不同时间的交易 交易金额 交易号想要知道这个会员哪一天购买金额刚好大于2000 那笔交易时间是什么笨办法是看一个会员的所有交易 我一个个加 加到大于或者等于2000块钱了 看这个会员的这笔交易的时间 但有1000多个会员如何用sql语句 或者循环语句 查出结果十分感谢大家!!解决追加分数!!!十分感谢!!

    提问者:实用资源网

    发布于2010-09-22

共1个回答
  • 千影月 丨Lv 0
    declare @T table([会员号] nvarchar(3),[交易号] int,[交易金额] int,[交易时间] Datetime)Insert @Tselect N'001',11,1200,'2009-10-01' union allselect N'001',32,2000,'2009-10-02' union allselect N'001',30,500,'2009-10-03' union allselect N'006',52,2000,'2009-10-02' union allselect N'006',212,400,'2009-10-03' union allselect N'003',61,500,'2009-10-05' union allselect N'003',32,1550,'2009-10-06' union allselect N'003',33,300,'2009-10-10' union allselect N'007',29,320,'2009-10-21' union allselect N'007',31,520,'2009-10-12' union allselect N'007',93,1000,'2009-10-11' union allselect N'007',21,250,'2009-10-24' union allselect N'007',35,1000,'2009-10-09' --SQL2000SELECT *FROM @T AS xWHERE [交易时间]=(Select MIN([交易时间]) from @T AS a WHERE (SELECT SUM([交易金额]) FROM @T WHERE [会员号]=a.[会员号] AND [交易时间]<=a.[交易时间])>=2000 AND [会员号]=x.[会员号] ) --SQL2005SELECT [会员号],[交易号],[交易金额],[交易时间]FROM (Select *,row=ROW_NUMBER()OVER(PARTITION BY [会员号] ORDER BY 交易时间) from @T AS a WHERE (SELECT SUM([交易金额]) FROM @T WHERE [会员号]=a.[会员号] AND [交易时间]<=a.[交易时间])>=2000)tWHERE row=1/*会员号 交易号 交易金额 交易时间---- ----------- ----------- -----------------------001 32 2000 2009-10-02 00:00:00.000003 32 1550 2009-10-06 00:00:00.000006 52 2000 2009-10-02 00:00:00.000007 93 1000 2009-10-11 00:00:00.000(4 个资料列受到影响)*/
    +10 2010-09-22 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。