特定の月に特定のトランザクションIDを持つアカウント数をカウントするSQLスクリプトがあります。私はこれを修正して、指定された月だけではなく、過去3か月のそれぞれにこれらのタイプのトランザクションを配置した場合には、acctsの数をカウントするようにします。これは、ワンタイムイベントを除外するためです。SQL:過去3か月間に特定のトランザクションIDが存在するアカウントをカウントする
私はかなり新しいSQLで、私が行った検索を通して明確な答えを見つけることができませんでした。助けていただければ幸いです。ありがとう!
SELECT
CLDR.YEAR_MONTH
,COUNT(DISTINCT TRAN.ACCT_NBR) AS IC_DD --counts all unique Acct numbers
FROM
REPORTS.FINANCIAL_TRAN AS TRAN
INNER JOIN REPORTS.ACCT AS ACCT ON TRAN.ACCT_NBR=ACCT.ACCT_NBR
INNER JOIN REPORTS.DATE AS CLDR ON TRAN.TRAN_DT=CLDR.CALENDAR_DATE
WHERE
TRAN.TRAN_CD IN ('id1','id2','id3') --Filters on Transaction IDs
AND
TRAN.TRAN_DT BETWEEN '2017-01-01' AND '2017-03-31'
GROUP BY
CLDR.YEAR_MONTH
ORDER BY
CLDR.YEAR_MONTH
それはトリックでした。私はちょうどそれがデータのプルダウンカレンダーの結果を表示する方法を把握します。ありがとう! – starfly
@starfly:どのカレンダーの結果、 'DATE '2017-01-01''?あなたはハードコーディングされた日付範囲を持っていて、毎月の行を持つ顧客を数えたいと思っています – dnoeth
YYYYMMという形式の日付列を持っています(これがCLDRに加入した理由です)。 TRAN_DTの場合、過去3ヶ月を引き出します。したがって、CLDR月が201703の場合は、TRAN_DT 2017-01-01 - 2017-03-31; CLDR月が201702の場合は、TRAN_DT 2016-12-01 - 2017-02-28を引き出します。そうする簡単な方法はありますか? – starfly