很抱歉,如果我用错误的词语来解释我的问题。
我有一张桌子,可以在织物质量控制过程中保持织物上的错误。我有这样的数据。
(在第一次滚动中有一个错误,持续8米而没有任何中断。但在第二次滚动中,即使错误相同,但中断也不是连续错误)
我怎样才能在下面得到这样的结果?
答案 0 :(得分:1)
这被称为“群岛”问题。一种解决方案是使用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
答案 1 :(得分:0)
你会想要使用好的'GROUP BY,以及MIN和MAX。
SELECT *,
MIN(ErrorMeter) ErrorBeginMeter,
MAX(ErrorMeter) ErrorEndMeter
FROM fabric_quality
GROUP BY Fabric,Roll
编辑:我刚刚意识到您的结果集只聚合了带有连续错误计的行,这需要more complicated solution。