zhaoqinghu 发表于 2009-12-24 16:18

请教个SQL语句(这个能用SQL实现吗)

有一张交易流水表,字段(流水号 卡号交易日期交易时间戳 金额)
流水号是主键,一个卡可以有多个交易流水记录,每个流水的时间戳及金额都可能相同

现在要统计交易日期>2009-11-02,每张卡的交易金额累计达到2万金额(>=20000)时,输出要求如下:

1.卡号
2,达到2万金额对应流水的“流水号”
3,达到2万金额对应流水的“交易时间戳”
4、到达2万时刻累计的金额

Germin 发表于 2009-12-24 17:26

需要用over子句

SELECT 卡号,流水号,交易时间戳,累计金额
FROM (
         SELECT 卡号,流水号,交易时间戳,
                SUM(金额)OVER(partition by 卡号 order by 交易时间戳) 累计金额,
                SUM(金额)OVER(partition by 卡号 order by 交易时间戳 range between unbounded preceding and 1 preceding) 前一次累计金额
         FROM 流水表
         WHERE 交易日期>'2009-11-02'   ) T
WHERE 累计金额>=20000
AND ( 前一次累计金额<20000 or 前一次累计金额 IS NULL )

没有调试,运行后可做相关调整。

zhaoqinghu 发表于 2009-12-24 21:02

回复 #2 Germin 的帖子

领教了,谢谢,明天好好测试一下
页: [1]
查看完整版本: 请教个SQL语句(这个能用SQL实现吗)