我有数字,但不是序列。如果这些是顺序的,那么结果应如下所示。 如果我有1,2,3,6,8,9,10,12等数据。 我需要像1-3,6,8-10,12
这样的结果答案 0 :(得分:1)
declare @Digits table (Value int primary key)
INSERT @Digits VALUES (1),(2),(3),(6),(8),(9),(10),(12)
SELECT STUFF(CONVERT(varchar(max),
(
SELECT
',' + CASE
WHEN MIN(Value) = MAX(Value) THEN CONVERT(varchar(10), MIN(Value))
ELSE CONVERT(varchar(10), MIN(Value)) + '-' + CONVERT(varchar(10), MAX(Value))
END
FROM (SELECT ROW_NUMBER() OVER (ORDER BY Value) AS Seq, Value FROM @Digits) Data
GROUP BY Value - Seq
FOR XML PATH('')
)), 1, 1, '') AS Result