2016-03-25 11 views
-3

DBに過去6ヶ月の顧客レコードがあります。過去2ヶ月間に存在していた顧客IDを検索するOracleクエリ

現在、トランザクションがいつ行われたかを識別する列(TRNX_CREATED_DATE)があります。

以下

は私が最後の一ヶ月の顧客レコードを取得することができています。このクエリでは期間

select distinct(CN_NUMBER),ACCOUNT_NUMBER,TRNX_CREATED_DATE from TRANSACTION_REPORTS 
where TRNX_CREATED_DATE>=add_months(trunc(sysdate,'mm'),-1) 

の1ヶ月の顧客レコードを取得するために使用クエリです。今月に新たに追加された顧客や過去2か月間に出席した顧客、または先月に出席していたが今月から退会した顧客を取得する方法がわからない。

しかし、今、私は機能

  1. 今月中と同様に、前の月に取引をした顧客の下に行うために3つの別々のクエリを記述します。
  2. 今月中に取引を行いましたが、前月に取引されなかったお客様。
  3. この月に取引を行っていないが前月に取引を行った顧客。

そうする多くの方法があります。..アドバンス

+1

これまでに試したことに関する情報を含めてください。 – jera

+0

私は追加情報を更新しました、plzは提案します。 – Krishna

+0

なぜmysqlタグですか? – Strawberry

答えて

0

に感謝を提案してください。以下では、私は解読可能なソリューションを提供しようとしています。 これは、最初の問題を解決:

select CN_NUMBER,ACCOUNT_NUMBER,TRNX_CREATED_DATE 
from TRANSACTION_REPORTS t 
/* a transaction in this month */ 
where trunc(last_day(t.TRNX_CREATED_DATE)) = trunc(last_day(sysdate)) 
    /* and a transaction in the previous month */ 
    and exists(select 1 
       from TRANSACTION_REPORTS t2 
       where t2.ACCOUNT_NUMBER = t.ACCOUNT_NUMBER 
       and trunc(last_day(t2.TRNX_CREATED_DATE)) = trunc(last_day(add_months(sysdate, -1))) 
      ) 

秒1は、あなたが唯一のブール論理のビットを必要とする、非常によく似ています。

select CN_NUMBER,ACCOUNT_NUMBER,TRNX_CREATED_DATE 
from TRANSACTION_REPORTS t 
/* a transaction in this month */ 
where trunc(last_day(t.TRNX_CREATED_DATE)) = trunc(last_day(sysdate)) 
    /* no transactions in the previous month */ 
    and NOT exists(
        select 1 
        from TRANSACTION_REPORTS t2 
        where t2.ACCOUNT_NUMBER = t.ACCOUNT_NUMBER 
        and trunc(last_day(t2.TRNX_CREATED_DATE)) = trunc(last_day(add_months(sysdate, -1))) 
       ) 

あなたは、単に為替に条件を持っている第三1、:

select CN_NUMBER,ACCOUNT_NUMBER,TRNX_CREATED_DATE 
from TRANSACTION_REPORTS t 
/* a transaction in the previous month */ 
where trunc(last_day(t.TRNX_CREATED_DATE)) = trunc(last_day(add_months(sysdate, -1))) 
    /* no transactions in this month */ 
    and NOT exists(
        select 1 
        from TRANSACTION_REPORTS t2 
        where t2.ACCOUNT_NUMBER = t.ACCOUNT_NUMBER 
        and trunc(last_day(t2.TRNX_CREATED_DATE)) = trunc(last_day(sysdate)) 
       ) 
+0

ありがとう@Aleksej、上記のクエリは私の要件を解決しました。 – Krishna

関連する問題