【发布时间】:2019-05-22 00:10:48
【问题描述】:
我有确定每年“失效”捐赠者数量的代码。我每年都会结合使用工会的捐助者失效。我希望这些数据每年自动更新而不添加联合。有没有办法让岁月变得充满活力?
我只使用了当前的静态脚本,自 2013 年以来我必须拉出所有失效的捐助者。提供的脚本显示 2017-2019。
--Donated 2018, Not 2019
SELECT DISTINCT
PY.OppFiscalYear, COUNT(DISTINCT PY.AccountId)
FROM
(SELECT DISTINCT PY.AccountId, PY.OppFiscalYear
FROM reporting.AllGifts PY
WHERE PY.OppFiscalYear = '2018'
AND PY.OpportunityRecordType IN ('Classy', 'Donation', 'Pledge')
AND PY.AccountRecordType = 'Household'
AND PY.OppStage = 'Paid') PY
LEFT JOIN
(SELECT DISTINCT Y.AccountId
FROM reporting.AllGifts Y
WHERE Y.OppFiscalYear = '2019'
AND Y.OpportunityRecordType IN ('Classy', 'Donation', 'Pledge')
AND Y.AccountRecordType = 'Household'
AND Y.OppStage = 'Paid') Y ON PY.ACCOUNTID = Y.ACCOUNTID
WHERE
Y.AccountId IS NULL
GROUP BY
PY.OppFiscalYear
UNION
--Donated 2017, Not 2018
SELECT DISTINCT
PY.OppFiscalYear, COUNT(DISTINCT PY.AccountId)
FROM
(SELECT DISTINCT PY.AccountId, PY.OppFiscalYear
FROM reporting.AllGifts PY
WHERE PY.OppFiscalYear = '2017'
AND PY.OpportunityRecordType IN ('Classy', 'Donation', 'Pledge')
AND PY.AccountRecordType = 'Household'
AND PY.OppStage = 'Paid') PY
LEFT JOIN
(SELECT DISTINCT Y.AccountId
FROM reporting.AllGifts Y
WHERE Y.OppFiscalYear = '2018'
AND Y.OpportunityRecordType IN ('Classy', 'Donation', 'Pledge')
AND Y.AccountRecordType = 'Household'
AND Y.OppStage = 'Paid') Y ON PY.ACCOUNTID = Y.ACCOUNTID
WHERE
Y.AccountId IS NULL
GROUP BY
PY.OppFiscalYear
我希望得到与目前相同的输出,但我希望它能够自动包含每天添加的任何新捐款。如果我继续使用当前的方法,则需要使用并集添加到顶部的新脚本是 2019 年和 2020 年。
【问题讨论】:
标签: sql sql-server dynamic ssms