22,209
社区成员
发帖
与我相关
我的任务
分享
IF OBJECT_ID(N'TEMPDB.DBO.#T') IS NOT NULL
DROP TABLE #T
GO
CREATE TABLE #T
(ID INT ,
HGG VARCHAR(5))
INSERT INTO #T
SELECT 2121,'12' UNION ALL
SELECT 2122,'3' UNION ALL
SELECT 2123,'7' UNION ALL
SELECT 2124,'5' UNION ALL
SELECT 2125,'6' UNION ALL
SELECT 2126,'7' UNION ALL
SELECT 2127,'7' UNION ALL
SELECT 2128,'7' UNION ALL
SELECT 2129,'0' UNION ALL
SELECT 2130,'11' UNION ALL
SELECT 2131,'12' UNION ALL
SELECT 2132,'12' UNION ALL
SELECT 2133,'14' UNION ALL
SELECT 2134,'0'
SELECT *,
IDENTITY(INT,1,1) AS ID_1,
(SELECT COUNT(*) FROM #T WHERE A.HGG=HGG AND ID<=A.ID) AS ID_2
INTO #A
FROM #T A
ORDER BY ID
SELECT A.*,A.ID_1-A.ID_2 AS ID_GROUP,ISNULL(B.ID_1-A.ID_1-1,0) AS DIFF
INTO #B
FROM #A A
LEFT JOIN #A B ON A.HGG=B.HGG AND B.ID_2=A.ID_2+1
SELECT A.HGG,MAX(QTY) AS QTY,MAX(DIFF) AS DIFF
FROM
(SELECT HGG,ID_GROUP,COUNT(1) AS QTY
FROM #B
GROUP BY HGG,ID_GROUP) AS A
JOIN
(SELECT HGG,MAX(DIFF) AS DIFF FROM #B GROUP BY HGG) AS B ON A.HGG=B.HGG
GROUP BY A.HGG
DROP TABLE #A
DROP TABLE #B
IF OBJECT_ID(N'TEMPDB.DBO.#T') IS NOT NULL
DROP TABLE #T
GO
CREATE TABLE #T
(ID INT ,
HGG VARCHAR(5))
INSERT INTO #T
SELECT 2121,'12' UNION ALL
SELECT 2122,'3' UNION ALL
SELECT 2123,'7' UNION ALL
SELECT 2124,'5' UNION ALL
SELECT 2125,'6' UNION ALL
SELECT 2126,'7' UNION ALL
SELECT 2127,'7' UNION ALL
SELECT 2128,'7' UNION ALL
SELECT 2129,'0' UNION ALL
SELECT 2130,'11' UNION ALL
SELECT 2131,'12' UNION ALL
SELECT 2132,'12' UNION ALL
SELECT 2133,'14' UNION ALL
SELECT 2134,'0'
WITH CTE_1
AS
(SELECT *,
ROW_NUMBER() OVER (ORDER BY ID) AS ID_1,
ROW_NUMBER() OVER (PARTITION BY HGG ORDER BY ID) AS ID_2 FROM #T),
CTE_2
AS
(SELECT A.*,A.ID_1-A.ID_2 AS ID_GROUP,ISNULL(B.ID_1-A.ID_1-1,0) AS DIFF
FROM CTE_1 A
LEFT JOIN CTE_1 B ON A.HGG=B.HGG AND B.ID_2=A.ID_2+1)
SELECT A.HGG,MAX(QTY) AS QTY,MAX(DIFF) AS DIFF
FROM
(SELECT HGG,ID_GROUP,COUNT(1) AS QTY
FROM CTE_2
GROUP BY HGG,ID_GROUP) AS A
JOIN
(SELECT HGG,MAX(DIFF) AS DIFF FROM CTE_2 GROUP BY HGG) AS B ON A.HGG=B.HGG
GROUP BY A.HGG