对不起,如果我用错误的词来解释我的问题。
我有一张表格,它在织物质量控制过程中保持机织织物上的错误。我有这样的数据。
(在第一次滚动中,有一个错误持续 8 米而没有任何中断。但在第二次滚动中,即使错误相同但有中断,它们不是连续错误)
我怎样才能在下面得到这样的结果?
对不起,如果我用错误的词来解释我的问题。
我有一张表格,它在织物质量控制过程中保持机织织物上的错误。我有这样的数据。
(在第一次滚动中,有一个错误持续 8 米而没有任何中断。但在第二次滚动中,即使错误相同但有中断,它们不是连续错误)
我怎样才能在下面得到这样的结果?
这就是所谓的“岛屿”问题。一种解决方案是用于row_number()
形成ErrorMeter
以不同方式更改的组1
:
select Fabric
, Roll
, min(ErrorMeter) as ErrorBeginMeter
, max(ErrorMeter) as ErrorEndMeter
, min(ErrorCode) as ErrorCode
from (
select row_number() over (partition by Fabric, Roll
order by ErrorMeter) - cast(ErrorMeter as int) as grp
, *
from FabricErrors
) as SubQueryAlias
group by
Fabric
, Roll
, grp
你会想要使用好的 OL' GROUP BY,聚合 MIN 和 MAX。
SELECT *,
MIN(ErrorMeter) ErrorBeginMeter,
MAX(ErrorMeter) ErrorEndMeter
FROM fabric_quality
GROUP BY Fabric,Roll
编辑:我刚刚意识到您的结果集仅聚合具有顺序错误表的行,这将需要更复杂的解决方案。