计算数据库中连续 2 年的成员 SQL Server Management Studio - 2008 R2

Count 2 consecutive years of Members in DB SQL Server Management Studio - 2008 R2

微软 SQL 服务器管理工​​作室 - 2008 R2

嗨,

我在此 table 中有一个名为 [VotingStatusHistory] ​​的 table 我有 5 列名为:

UID
MemberID
AffilliationDate
VotingStatus
Inserted

这个 table 有 [MemberID's] 并且持有会员加入的每一年的 [AffilliationDates]。

我想知道 [MemberID] 的 [AffilliationDate's] 连续 2 年 [VotingStatus] 为 1(以下示例为 2017 年、2018 年)

UID     MemberID       AffilliationDate      VotingStatus        Inserted
535436  153393      2017-04-24 09:46:13.000     1        2018-03-14 00:00:00.000
582084  153393      2018-04-30 09:46:13.000     1        2019-01-29 00:00:00.000

请帮忙解决这个问题,我试过使用 SUM 和 CASE,但到目前为止没有任何进展。 提前致谢...

首先,您应该知道 2008 r2 版本已于今年 7 月结束其扩展支持。这意味着它将不再接收来自 Microsoft 的更新(甚至不是安全更新!)。
这就是为什么您应该认真考虑升级到更高版本的 SQL Server 的原因之一。
另一个原因是从 2012 开始(即下一个版本),SQL 服务器支持 laglead window 功能,这对像这样的查询。

说了这么多,假设您无法升级到受支持的版本,这里有一个查询应该可以让您使用 2008 r2 版本获得所需的结果:

SELECT vsh.UID, vsh.MemberID, vsh.AffilliationDate, vsh.VotingStatus, vsh.Inserted
FROM [dbo].[VotingStatusHistory] As vsh
WHERE vsh.VotingStatus = 1
AND EXISTS
(
    SELECT 1
    FROM [dbo].[VotingStatusHistory] As i
    WHERE vsh.MemberID = i.MemberID
    AND i.VotingStatus = 1
    AND YEAR(i.AffilliationDate) = YEAR(vsh.AffilliationDate) + 1
)