mysql
WITH RankedData AS (
SELECT
识别码,
产品规格,
CAST(SUBSTRING(识别码, 3) AS UNSIGNED) AS 编号,
CAST(SUBSTRING(识别码, 3) AS UNSIGNED) - ROW_NUMBER() OVER (PARTITION BY 产品规格 ORDER BY CAST(SUBSTRING(识别码, 3) AS UNSIGNED)) AS 分组标识
FROM 你的表名
),
GroupedData AS (
SELECT
产品规格,
MIN(识别码) AS 开始,
MAX(识别码) AS 结束,
COUNT(*) AS 总计数,
分组标识
FROM RankedData
GROUP BY 产品规格, 分组标识
)
SELECT
产品规格,
开始,
结束,
总计数
FROM GroupedData
ORDER BY 产品规格, 开始;
SqlServer
WITH RankedData AS (
SELECT
识别码,
产品规格,
CAST(SUBSTRING(识别码, 3, LEN(识别码)-2) AS INT) AS 编号,
CAST(SUBSTRING(识别码, 3, LEN(识别码)-2) AS INT) - ROW_NUMBER() OVER (PARTITION BY 产品规格 ORDER BY CAST(SUBSTRING(识别码, 3, LEN(识别码)-2) AS INT)) AS 分组标识
FROM 你的表名
),
GroupedData AS (
SELECT
产品规格,
MIN(识别码) AS 开始,
MAX(识别码) AS 结束,
COUNT(*) AS 总计数,
分组标识
FROM RankedData
GROUP BY 产品规格, 分组标识
)
SELECT
产品规格,
开始,
结束,
总计数
FROM GroupedData
ORDER BY 产品规格, 开始;