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,但到目前为止没有任何帮助。预先感谢...
[首先,您应该知道2008 r2版本已经结束了对它的扩展支持。这意味着它将不再从Microsoft接收更新(甚至没有安全更新!)。这就是为什么您应该认真考虑升级到更高版本的SQL Server的原因之一。另一个原因是,从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
)