2014-01-31 83 views
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')) 

但正顯示出在桌上,而不是所需要的結果的所有條目。

回答

0
  1. 拿到3個事務是由用戶在同一個月內作出

    喜歡的東西... GROUP BY得到月(DATE_TRN),具有計數(得到月(DATE_TRN))> = 3

MySQL的:

SELECT CUST_ID,DATE_TRAN FROM XXX其中的cust_id在 (來自XXX分組依據DATE_FORMAT(DATE_TRAN, '%M'),其具有計數(DATE_FORMAT(DATE_TRAN選擇的cust_id, '%M') )> 2)

  1. 拿到3個事務是由用戶在3利弊個月

    組作出由得到月(DATE_TRN),其具有計數(得到月(DATE_TRN))> 1時,計數(得到月(DATE_TRN )-1)> 1,count(getmonth(DATE_TRN)-2)> 1

+0

我在oracle中寫入查詢。我修改了您的查詢,但這不起作用 – ritika

+0

SELECT CUST_ID,DATE_TRAN FROM fake_cust where cust_id in(SELECT cust_id from fake_cust Group By EXTRACT(MONTH FROM DATE_TRAN)having(count(EXTRACT(MONTH FROM DATE_TRAN))> 1 AND count(EXTRACT (MONTH FROM DATE_TRAN)-1)> 1 AND count(EXTRACT(MONTH FROM DATE_TRAN)-2)> 1)) – ritika

相關問題