gpt4 book ai didi

sql - 比较列上的当前月份和上个月的行,SQL Server 2012

转载 作者:行者123 更新时间:2023-12-04 15:33:03 27 4
gpt4 key购买 nike

我需要一些指导和帮助来解决我不完全确定如何在 SQL Server 2012 中解决的问题。我认为 LAGLEAD函数可能有用,但我不确定。

这是我的数据现在的样子:

=========================================
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 的质量

目标:

我的目标是比较 LocationCode为当前 YearMonth (我们称之为 201406 )和之前的 Yearmonth (我们称之为 201405 ):

一个例子 :
=========================================
YearMonth LocationCode Active
=========================================
201405 123 0
201406 123 2

基本上我想弄清楚的是如何在名为 Active 的列上比较当前月份的行 (201406) 与上个月的行 (201405)。 .

如果当前月份的行 Active column 是非零值,而上个月的 Active 是零,那么我们得出当前月份的行为"new"(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

我怎么解决这个问题?

最佳答案

我认为您可以使用这样的查询:

SELECT *,
CASE
WHEN Active <> 0 AND
ISNULL(LAG(Active) OVER (PARTITION BY LocationCode ORDER BY YearMonth), 0) = 0 THEN 1
ELSE 0
END As New
FROM yourTable;

[SQL Fiddle Demo]

关于sql - 比较列上的当前月份和上个月的行,SQL Server 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31903349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com