SQL按顺序计算一个数
我有下表,你可以看到ID不一样。所以我不能分组。我需要数一数所有按顺序排列的。比如从身份证9号到13号,从身份证20号到23号。我怎么做SQL按顺序计算一个数,sql,sql-server,tsql,sql-server-2012,gaps-and-islands,Sql,Sql Server,Tsql,Sql Server 2012,Gaps And Islands,我有下表,你可以看到ID不一样。所以我不能分组。我需要数一数所有按顺序排列的。比如从身份证9号到13号,从身份证20号到23号。我怎么做 这里有一个解决方案,它是滞后和领先 ;WITH StackValues AS ( SELECT T.*, PreviousStatus = LAG(T.Status, 1, 0) OVER (ORDER BY T.ID ASC), NextStatus = LEAD(T.Status, 1, 0) OVE
这里有一个解决方案,它是
滞后和领先
;WITH StackValues AS
(
SELECT
T.*,
PreviousStatus = LAG(T.Status, 1, 0) OVER (ORDER BY T.ID ASC),
NextStatus = LEAD(T.Status, 1, 0) OVER (ORDER BY T.ID ASC)
FROM
#YourTable AS T
),
ValuesToSum AS
(
SELECT
L.*,
ValueToSum = CASE
WHEN L.Status = 1 AND L.PreviousStatus = 1 AND L.NextStatus = 0 THEN 1
ELSE 0 END
FROM
StackValues AS L
)
SELECT
Total = SUM(V.ValueToSum)
FROM
ValuesToSum AS V
LAG
将为您提供N
上一行(N=1
,对于本例),而LEAD
将为您提供N
下一行(N=1
)。查询将根据上一个和下一个值生成另一列(ValueToSum
),并使用其结果进行求和。请阅读接受的答案SQL server 2012您尚未指定您的预期输出。能否提及您的预期输出。您接受的解决方案似乎没有给出正确的结果。代码没有给出预期的输出,只是给出了一个数字。好的,这是计算表上的所有数字。但我需要总结一下,从id 9到id 13,我会把它算作一个。我需要总结一下所有的顺序。