22,298
社区成员
发帖
与我相关
我的任务
分享;WITH cte AS
(
SELECT
rowno=ROW_NUMBER() OVER(ORDER BY GETDATE()),
groupno=ROW_NUMBER() OVER(PARTITION BY 制单号 ORDER BY GETDATE()),
*
FROM tb
)
SELECT * FROM
(SELECT 制单号, diffno=rowno-groupno, rowno=MIN(rowno) FROM cte GROUP BY 制单号, rowno-groupno) a --或用max(rowno)
CROSS APPLY
(SELECT TOP(1) * FROM cte WHERE rowno=a.rowno) b
ORDER BY a.rownoCREATE TABLE #temp
(
[name] CHAR(1)
)
INSERT #temp
SELECT 'A' UNION ALL SELECT 'A' UNION ALL
SELECT 'B' UNION ALL SELECT 'C' UNION ALL
SELECT 'C' UNION ALL SELECT 'A'
GO
--SQL:
SELECT [name] FROM
(
SELECT
rowno=ROW_NUMBER() OVER(ORDER BY GETDATE()),
groupno=ROW_NUMBER() OVER(PARTITION BY [name] ORDER BY GETDATE()),
*
FROM #temp
) T
GROUP BY [name], rowno-groupno
ORDER BY MIN(rowno)
/*
name
A
B
C
A
*/