Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 r2 统计连续两年在DB SQL Server Management Studio中的成员数-2008 R2_Sql Server 2008 R2 - Fatal编程技术网

Sql server 2008 r2 统计连续两年在DB SQL Server Management Studio中的成员数-2008 R2

Sql server 2008 r2 统计连续两年在DB SQL Server Management Studio中的成员数-2008 R2,sql-server-2008-r2,Sql Server 2008 R2,Microsoft SQL Server Management Studio-2008 R2 嗨 我有一个名为[VotingStatusHistory]的表,在该表中,我有5列,分别命名为: UID MemberID AffilliationDate VotingStatus Inserted 液体 MemberID 宣誓日期 投票状态 插入 此表包含[MemberID],并保存会员每年的[AffilliationDates] 我想知道什么样的[MemberID]连续两年拥有[Affilliat

Microsoft SQL Server Management Studio-2008 R2

我有一个名为[VotingStatusHistory]的表,在该表中,我有5列,分别命名为:

UID MemberID AffilliationDate VotingStatus Inserted 液体 MemberID 宣誓日期 投票状态 插入 此表包含[MemberID],并保存会员每年的[AffilliationDates]

我想知道什么样的[MemberID]连续两年拥有[AffilliationDate],且[VotingStatus]为1(以下为2017年、2018年的示例)

UID MemberID AffilliationDate VotingStatus已插入 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的更新(甚至安全更新!)。
这就是为什么您应该认真考虑升级到SQLServer的后期版本的原因。 另一个原因是,从2012年开始(这是下一个版本),SQL Server支持
lag
lead
窗口函数,这对这样的查询非常有用

说到这里,假设您无法升级到受支持的版本,下面是一个查询,它将为您提供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
)
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
)