2

我有一个表,其列名 date_tran 显示用户进行任何交易的日期。有什么方法可以检查用户进行的 3 笔交易是在同一个月还是连续 3 个月?

我正在使用以下代码段:

SELECT CUST_ID,  DATE_TRAN FROM  FAKE_CUST F WHERE 
          EXISTS( 
                SELECT 1 from FAKE_CUST where (TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')-1 OR TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')) AND 
                                        CUST_ID= F.CUST_ID  AND TO_CHAR(DATE_TRAN,'YYYY')=TO_CHAR(F.DATE_TRAN,'YYYY'))
      and exists(
                SELECT 1 from FAKE_CUST where (TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')-2 OR TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')) AND 
                                        CUST_ID= F.CUST_ID AND TO_CHAR(DATE_TRAN,'YYYY')=TO_CHAR(F.DATE_TRAN,'YYYY'))

但正在显示表中的所有条目,而不是所需的结果。

4

1 回答 1

0
  1. 用户在同一个月内进行了 3 次交易

    像... Group By getmonth(DATE_TRN) 有 count(getmonth(DATE_TRN)) >= 3

mysql:

SELECT CUST_ID, DATE_TRAN FROM XXX where cust_id in (SELECT cust_id from XXX Group By DATE_FORMAT(DATE_TRAN, '%m') 有 count(DATE_FORMAT(DATE_TRAN, '%m')) > 2)

  1. 用户在 3 个缺点月内完成了 3 笔交易

    按 getmonth(DATE_TRN) 分组, count(getmonth(DATE_TRN)) > 1,count(getmonth(DATE_TRN)-1) > 1,count(getmonth(DATE_TRN)-2) > 1

于 2014-01-31T07:10:00.913 回答