0

对不起,如果我用错误的词来解释我的问题。

我有一张表格,它在织物质量控制过程中保持机织织物上的错误。我有这样的数据。

表的结果

(在第一次滚动中,有一个错误持续 8 米而没有任何中断。但在第二次滚动中,即使错误相同但有中断,它们不是连续错误)

我怎样才能在下面得到这样的结果?

在此处输入图像描述

4

2 回答 2

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

SQL Fiddle 上的实时示例。

于 2013-08-20T09:23:21.840 回答
0

你会想要使用好的 OL' GROUP BY,聚合 MIN 和 MAX。

SELECT *,
    MIN(ErrorMeter) ErrorBeginMeter,
    MAX(ErrorMeter) ErrorEndMeter
FROM fabric_quality
GROUP BY Fabric,Roll

编辑:我刚刚意识到您的结果集仅聚合具有顺序错误表的行,这将需要更复杂的解决方案

于 2013-08-20T08:23:37.770 回答