我正在尝试验证一些数据,我想找到 A 列的选定值的 B 列的最小值和最大值。它看起来像这样:
Select min(colB), max(colB)
From table
where colA = SomeValue
我想知道的是如何指定一个特定的间隔,比如 10,这将给我每 10 个 A 的 b 列的每个最小值和最大值。它的功能如下:
for(int i = minValueOfColA; 1<maxValueOfColA;i+=10){
Select min(colB), max(colB)
From table
where colA = i
}
除非我想用 sql 来做。
最佳答案
我希望这就是您正在寻找的。由于增量为 +10
,因此值为 2
的 ColA
将被忽略。
查询:
DECLARE @Table TABLE
(
colA INT,
colB INT
)
INSERT @Table VALUES(1, 2), (1, 39), (2, 2), (11, 21), (11, 42)
;WITH cteIncrement
AS
(
SELECT MIN(colA) minColA, MAX(colA) maxColA
FROM @Table
UNION ALL
SELECT minColA + 10, maxColA
FROM cteIncrement
WHERE minColA + 10 <= maxColA
)
SELECT MIN(t.colB) minColB, MAX(t.colB) maxColB
FROM cteIncrement cte
JOIN @Table t
ON t.colA = cte.minColA
GROUP by t.colA
结果:
+------+---------+---------+
| colA | minColB | maxColB |
+------+---------+---------+
| 1 | 2 | 39 |
| 11 | 21 | 42 |
+------+---------+---------+
关于sql-server - Sql服务器-根据另一列查找列的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42762358/