sql-server - Sql服务器-根据另一列查找列的范围

标签 sql-server

我正在尝试验证一些数据,我想找到 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,因此值为 2ColA 将被忽略。

查询:

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/

相关文章:

sql-server - 将 MSSQL 数据库与 docker 连接

sql-server - 将平面文件导入 SQL Server 表时插入日期

sql-server - 使用 -Variable 参数时 Invoke-Sqlcmd cmdlet 引发异常

sql-server - 在 SQL Server 中基于临时表创建永久表

sql - 将 getdate() 转换为 EST

sql-server - 如何在 SSMS 2008 中更改 "Edit Top 200 Rows"中的 SQL

sql-server - 如何检索从 SQL Server 到 VB.NET 受影响的行数?

sql-server - SQL Server死锁清晰度?

SQL Server 2005 : Round returns incorrect value if I use a float variable

sql-server - SSRS 中的自定义定时订阅计划