我知道这是在当天晚些时候,我的大脑只是油炸....
使用Teradata,我需要COUNT DISTINCT
MEMBERS
过去六个月内没有TRANS
,COUNT
TRANS
的数量{{1}}他们历史上(六个月之前)。我们可以假设截止日期是01/01/2012。所有表都包含在一个表中。
例如:
会员| Tran Date
123 | 01/01/2011
789 | 06/01/2011
123 | 10/31/2011
678 | 04/03/2011
789 | 06/01/2012
因此,2名成员在2012年1月1日之前共有3笔交易,截止日期为2012年1月1日。
在这个例子中,我的结果是:
会员| TRANS
2 | 3
答案 0 :(得分:0)
您无法在一个SQL语句中执行此操作。使用子查询。这是TSQL因为我不熟悉Teradata。
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)
)
答案 1 :(得分: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'
)