mysql5资源共享

 找回密码
 立即注册
查看: 55|回复: 2

[MS-SQL Server] 【应用】如何查询客户在一小时内成功刷卡10元以内的金额,再次成功刷卡10000元以上的金额。

[复制链接]

2

主题

5

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2019-7-22 09:38:36 | 显示全部楼层 |阅读模式
求助求助,这个问题已经自行百度搜索过,仍然没有找到答案,所以上论坛找找大神相助,感谢走过路过的朋友,感谢CSDN提供给的平台



一张记录所有用户交易日期、时间、id、金额的表格;查询一个小时内先刷卡10元以内的金额,刷卡成功后再次进行≥10000元的交易记录,sql语言如何写呢?


交易日期        交易时间        用户id        交易金额
20190611        195639        A00001        25
20190611        201645        A00001        7
20190611        201745        A00001        6
20190611        201749        A00001        18
20190611        201823        A00001        12002
20190612        160825        A00001        5822
20190613        160749        A00001        1088
20190614        172603        A00005        58992
20190614        183406        A00005        9
20190614        192309        A00005        1123
20190614        192327        A00005        170000
20190615        180935        A00002        8
20190615        230736        A00007        8.9
20190616        210928        A00002        79
20190617        132539        A00001        1400


3204.png

3204.png

回复

使用道具 举报

0

主题

46

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2019-7-22 11:00:00 | 显示全部楼层

  1. --
  2. DECLARE@tTABLE(交易日期VARCHAR(10),交易时间varchar(10),用户idvarchar(100),交易金额int)
  3. INSERT@t
  4. SELECT'20190611','195639','A00001',25
  5. UNIONSELECT'20190611','201645','A00001',7
  6. UNIONSELECT'20190611','201745','A00001',6
  7. UNIONSELECT'20190611','201749','A00001',18
  8. UNIONSELECT'20190611','201823','A00001',12002
  9. UNIONSELECT'20190612','160825','A00001',5822
  10. UNIONSELECT'20190613','160769','A00001',1088
  11. UNIONSELECT'20190614','172603','A00005',58992
  12. UNIONSELECT'20190614','183406','A00005',9
  13. UNIONSELECT'20190614','192309','A00005',1123
  14. UNIONSELECT'20190614','192327','A00005',170000
  15. UNIONSELECT'20190615','180935','A00002',8
  16. UNIONSELECT'20190615','230736','A00007',8.9
  17. UNIONSELECT'20190616','210928','A00002',79
  18. UNIONSELECT'20190617','132539','A00001',1400


  19. SELECTa.用户id,a.[10交易时间],b.[10000交易时间]
  20. FROM
  21. (SELECT用户id,交易日期,MAX(交易时间)[10交易时间]FROM@tWHERE交易金额10000GROUPBY用户id,交易日期)bONa.用户id=b.用户idANDa.交易日期=b.交易日期
  22. ANDCAST(b.[10000交易时间]ASINT)-CAST(a.[10交易时间]ASINT)A.TIME_NEWANDDATEDIFF(SECOND,A.TIME_NEW,TIME_NEW)B.TIME_NEWAND交易金额>=10000)
  23. ORDERBYA.用户id,A.TIME_NEW

复制代码
回复

使用道具 举报

7

主题

531

帖子

1089

积分

金牌会员

Rank: 6Rank: 6

积分
1089
发表于 2019-7-22 14:20:12 | 显示全部楼层
  1. createtable#t
  2. (交易日期varchar(20),交易时间varchar(20),用户idvarchar(20),交易金额decimal(18,1))
  3. insertinto#t
  4. select'20190611','195639','A00001',25unionall
  5. select'20190611','201645','A00001',7unionall
  6. select'20190611','201745','A00001',6unionall
  7. select'20190611','201749','A00001',18unionall
  8. select'20190611','201823','A00001',12002unionall
  9. select'20190612','160825','A00001',5822unionall
  10. select'20190613','160749','A00001',1088unionall
  11. select'20190614','172603','A00005',58992unionall
  12. select'20190614','183406','A00005',9unionall
  13. select'20190614','192309','A00005',1123unionall
  14. select'20190614','192327','A00005',170000unionall
  15. select'20190615','180935','A00002',8unionall
  16. select'20190615','230736','A00007',8.9unionall
  17. select'20190616','210928','A00002',79unionall
  18. select'20190617','132539','A00001',1400
  19. withtas(
  20. selectrn=row_number()over(orderbygetdate()),
  21. 交易日期1=a.交易日期,交易时间1=a.交易时间,用户id1=a.用户id,交易金额1=a.交易金额,
  22. 交易日期2=c.交易日期,交易时间2=c.交易时间,用户id2=c.用户id,交易金额2=c.交易金额
  23. from#ta
  24. crossapply(selectb.*
  25. from#tb
  26. whereb.用户id=a.用户id
  27. anddatediff(ss,
  28. cast(a.交易日期+''+left(a.交易时间,2)+':'+substring(a.交易时间,3,2)+':'+right(a.交易时间,2)asdatetime),
  29. cast(b.交易日期+''+left(b.交易时间,2)+':'+substring(b.交易时间,3,2)+':'+right(b.交易时间,2)asdatetime))between1and3600
  30. andb.交易金额>=10000)c
  31. wherea.交易金额<10)
  32. select交易日期=交易日期1,交易时间=交易时间1,用户id=用户id1,交易金额=交易金额1
  33. from(select交易日期1,交易时间1,用户id1,交易金额1,rnfromt
  34. unionall
  35. select交易日期2,交易时间2,用户id2,交易金额2,rnfromt)u
  36. orderbyrn,交易日期1,交易时间1
  37. /*
  38. 交易日期交易时间用户id交易金额
  39. ---------------------------------------------------------------------------------------------------
  40. 20190611201645A000017.0
  41. 20190611201823A0000112002.0
  42. 20190611201745A000016.0
  43. 20190611201823A0000112002.0
  44. 20190614183406A000059.0
  45. 20190614192327A00005170000.0
  46. (6行受影响)
  47. */
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2019-10-23 00:55 , Processed in 0.046294 second(s), 21 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表