也许这个吗?(我没有运行它的SQL机器)
WITH sequenced_data AS( SELECt ROW_NUMBER() OVER (PARTITION BY name ORDER BY start_inst) NameSequenceID, ROW_NUMBER() OVER (PARTITION BY name, pre, subpre ORDER BY start_inst) NameStateSequenceID, * FROM data)SELECt name, MIN(start_inst) start_inst, MAX(end_inst) end_inst, pre, subpreFROM sequenced_dataGROUP BY name, pre, subpre, NameSequenceID - NameStateSequenceID



