0

私はちょうど一日の終わりで、私の脳はちょうど揚げられていることを知っています....

Teradata を使用して、私は過去 6 か月間に 1 つもCOUNT DISTINCT MEMBERS持っていないことTRANSと、過去に(6 か月前に) 持っていCOUNTた数を確認する必要がありTRANSます。締め切り日は 2012 年 1 月 1 日であると想定できます。すべてのテーブルが 1 つのテーブルに含まれています。

例えば:

メンバー | 取引日

123 | 2011/01/01

789 | 2011/06/01

123 | 2011/10/31

678 | 2011/04/03

789 | 2012/06/01

したがって、2 人のメンバーは、2012 年 1 月 1 日より前の日付の合計 3 つのトランザクションを持ち、2012 年 1 月 1 日以降のトランザクションはありません。

この例では、私の結果は次のようになります。

メンバー | トランス

2 | 3

4

2 に答える 2

0

このソリューションを試してください:

SELECT
    COUNT(DISTINCT member_id) AS MEMBERS,
    COUNT(*) AS TRANS
FROM
    tbl
WHERE 
    member_id NOT IN
    (
        SELECT DISTINCT member_id
        FROM tbl
        WHERE trans_date > '2012-01-01'
    )
于 2012-06-22T00:05:30.850 に答える
0

1 つの SQL ステートメントでそれを行うことはできません。サブクエリを使用します。これは、Teradata に慣れていない TSQL です。

DECLARE @CUTOFF DATETIME = DATEADD(MO,-6,GETDATE()) --6MTHS AGO
SELECT COUNT(MEMBERID) AS MEMBERS, SUM(TRANSCOUNT) AS TRANS FROM (
SELECT DISTINCT 
  MEMBERID, 
  (SELECT COUNT(*) TRANSDATE WHERE TRANSDATA.MEMBERID = MEMBER.MEMBERIF) AS TRANSCOUNT
FROM MEMBER WHERE NOT EXISTS 
  (SELECT * FROM TRANSDATA, MEMBER WHERE 
     TRANSDATA.MEMBERID = MEMBER.MEMBERIF 
     AND TRANDATE > @CUTOFF)
)
于 2012-06-22T00:01:15.040 に答える