【发布时间】:2015-08-09 10:42:42
【问题描述】:
对于一个我不完全确定如何在 SQL Server 2012 中解决的问题,我需要一些指导和帮助。我认为 LAG 和 LEAD 函数可能有用,但我不确定。
这是我的数据现在的样子:
=========================================
YearMonth LocationCode Active
=========================================
201405 123 0
201406 123 2
201409 211 1
201410 211 0
201411 214 0
201412 214 3
我们有一个YearMonth 列显示每个locationCode 的状态,还有一个Active int 表示每个LocationCode 的质量
目标:
我的目标是比较当前的YearMonth(我们称之为201406)和之前的Yearmonth(我们称之为201405)的LocationCode:
一个例子:
=========================================
YearMonth LocationCode Active
=========================================
201405 123 0
201406 123 2
基本上,我想弄清楚的是如何在名为Active 的列上将当前月份的行 (201406) 与上个月的行 (201405) 进行比较。
如果当前月份的行 Active 列不为零且上个月的 Active 为零,则我们将当前月份的行推断为“新”(1) 否则 (0)。
下面是一个例子:
==================================================
YearMonth LocationCode Active New
===================================================
201405 123 0 0
201406 123 2 1
201409 211 1 0
201410 211 0 0
201411 214 0 0
201412 214 3 1
我该如何解决这个问题?
【问题讨论】:
-
我对 ROW_NUMBER() 有许多变体,第一次看该行和 Active 为零,第二行为非零,但在许多情况下并没有正确显示。由于活动在某个月可能是 1 而其他不是,这就是为什么我热衷于对当前和上个月进行一些比较技术。
标签: sql sql-server-2012 lead