如果我要有一个包含n行的整数列的表,并想检查它们是否连续,我该怎么办呢?
DECLARE @Temp TABLE
(
IntegerValue INT,
Processed BIT
)
Run Code Online (Sandbox Code Playgroud)
我有一个解决方案,适用于3行,但这是无穷无尽的,如果要求改变那么查询也是如此(忽略我的总和在这种情况下不起作用的事实).
@SumOfValues = (@FirstValue * @NumOfValues) + @NumOfValues
Run Code Online (Sandbox Code Playgroud)
Mar*_*ith 14
SELECT CASE
WHEN COUNT(DISTINCT IntegerValue) /*Or COUNT(*) dependant on how
duplicates should be treated */
= 1 + MAX(IntegerValue) - MIN(IntegerValue) THEN 'Y'
ELSE 'N'
END
FROM @Temp
Run Code Online (Sandbox Code Playgroud)
如果你想知道差距在哪里可以使用
;WITH T AS
(
SELECT *,
DENSE_RANK() OVER (ORDER BY IntegerValue) - IntegerValue AS Grp
FROM @Temp
)
SELECT MIN(IntegerValue) AS RangeStart,
MAX(IntegerValue) AS RangeEnd
FROM T
GROUP BY Grp
ORDER BY MIN(IntegerValue)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9515 次 |
| 最近记录: |