DB SQL Server Management Studio-2008 R2中连续两年的成员计数

问题描述 投票:0回答:1

Microsoft SQL Server Management Studio-2008 R2

嗨,

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

UID会员ID所属日期投票状态已插入

此表具有[MemberID's,并保留成员每年的[AffilliationDates]。

我想知道[会员ID]连续两年[投票状态]为1([下面的示例为2017年,2018年])具有[会员身份日期]

插入的UID会员ID所属日期投票状态535436 153393 2017-04-24 09:46:13.000 1 2018-03-14 00:00:00.000582084 153393 2018-04-30 09:46:13.000 1 2019-01-29 00:00:00.000

[请提供一些帮助,以解决此问题,我尝试过使用SUM和CASE,但到目前为止没有任何帮助。预先感谢...

sql-server-2008-r2
1个回答
1
投票

[首先,您应该知道2008 r2版本已经结束了对它的扩展支持。这意味着它将不再从Microsoft接收更新(甚至没有安全更新!)。这就是为什么您应该认真考虑升级到更高版本的SQL Server的原因之一。另一个原因是,从2012年(第二个版本)开始,SQL Server支持laglead窗口函数,这在诸如此类的查询中非常有用。

已经说了这么多,并且假设您不能升级到受支持的版本,那么以下查询应该可以在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
)
© www.soinside.com 2019 - 2024. All rights reserved.