我试图确定“第一次给予者”,这是2015财年但从未给过的人。我还需要忽略因某种原因而给出的用户(appealCode)。
下面是我的表格中的一些字段以及需要限制的信息的示例。
**FundLedger**
Account ID EntryAmount GiftReceivedDt AppealCode
1000 $500 7/1/2014 1
1000 $500 2/2/2002 2
2000 $25 8/1/2014 1
2000 $25 9/1/2014 1
3000 $100 10/1/2014 1
4000 $1,000 11/1/2014 2
**ConstituentTotals**
ConstituentID FirstTransactionDate LastTransactionDate CashAmount
1000 2/2/2002 1/1/2014 $1,000
2000 3/1/2014 4/1/2014 $50
3000 5/1/2014 5/1/2014 $100
4000 11/1/2014 11/1/2014 $1,000
我需要的是找到在2014年6月1日到今天之间从未给过的成员的数量,并且没有给予AppealCode 2礼物。
因此我从样本信息中得到的数字是'2'。
**Information Needed**
ConstituentID CashAmount FirstTransactionDate LastTransactionDate AppealCode
2000 $50 3/1/2014 4/1/2014 1
3000 $100 5/1/2014 5/1/2014 1
截至目前,如果我忽略AppealCode,我可以获得给予的人数,或者我可以获得AppealCode限制,但我得到了给予者的所有交易。
目前在这个阶段,它将计数数量增加了77,000次,每个条目对应一次。
'SELECT
Number_Of_New_Donors = ( SELECT COUNT(a.ConstituentID)
From dbo.FundConstituentTotals a
RIGHT JOIN dbo.FundLedger b
ON a.ConstituentID = b.AccountID
WHERE (a.FirstTransactionDT between '6/1/2014' and '5/31/2015'
AND a.CashAmount > '0'
AND a.GivingYear = '2015'
AND A.GivingYear !< '2015')
AND (b.GiftReceivedDt between '6/1/2014' and '5/31/2015'
AND b.RecordTypeID != '0'
AND b.RecordTypeID != '-1'
AND b.RecordTypeID != '2'))
FROM FundConstituentTotals'
建议的回应结果:
ConstituentID FundConstituentTotalID ConstituentID GivingYear PledgeAmount CashAmount NonCashAmount FirstTrans
49427 77314 49427 2015 0 25 0 1/13/2015
49427 77314 49427 2015 0 25 0 1/13/2015
49427 77314 49427 2015 0 25 0 1/13/2015
49427 77314 49427 2015 0 25 0 1/13/2015
刚发现数据是无效的,FirstTransactionDate不提供第一笔交易的日期,只是交易开始发布到分类账的日期(有人在此过去了)。我将不得不在DATES之间使用GiftReceivedDate,并找到一种方法来删除他们在2014年之前的日期。
答案 0 :(得分:1)
SELECT Number_Of_New_Donors = ( SELECT COUNT(a.ConstituentID)
From dbo.FundConstituentTotals a
LEFT JOIN dbo.FundLedger b
ON a.ConstituentID = b.AccountID
AND a.LastTransactionDate = b.GiftReceivedDt
WHERE a.FirstTransactionDT between '2015-01-01' and '2015-05-31'
AND b.AppealCode != 2)
这似乎做你想要的。 FirstTransaction是今年(因为它是第一个,不能有以前的),而且申诉代码不是2.你的代码的其余部分试图做什么?