Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从同一列中选择多个最大值_Sql_Aggregate Functions - Fatal编程技术网

Sql 从同一列中选择多个最大值

Sql 从同一列中选择多个最大值,sql,aggregate-functions,Sql,Aggregate Functions,我有一个用户数据库,根据用户的类型在一定范围内为用户分配一个ID号。例如,董事会成员的ID介于1和100之间,孩子的ID介于1001和3000之间,家长的ID介于3001和7000之间,等等* 我想为我的ID的每个“段”获得一个最高使用数的列表 当然,我可以通过这样做获得最高的数量 SELECT MAX(Persons.Number) as Maximum FROM Persons 并获得3000以下的最大值,如下所示: SELECT MAX(Persons.Number) as MaxChi

我有一个用户数据库,根据用户的类型在一定范围内为用户分配一个ID号。例如,董事会成员的ID介于1和100之间,孩子的ID介于1001和3000之间,家长的ID介于3001和7000之间,等等*

我想为我的ID的每个“段”获得一个最高使用数的列表

当然,我可以通过这样做获得最高的数量

SELECT MAX(Persons.Number) as Maximum FROM Persons
并获得3000以下的最大值,如下所示:

SELECT MAX(Persons.Number) as MaxChild FROM Persons WHERE Persons.Number<=3000
从Persons.Number所在的Persons中选择MAX(Persons.Number)作为MaxChild只需使用
IF()

上面是MySQL语法。在SQL Server中,您可以使用
IIF()
。在每个RDBMS(因为它是ANSI-SQL标准)中应该工作的是


好极了
如果
对我不起作用,在你编辑答案时,谷歌帮我找到了
IIF
(实际上是mssql)。
SELECT 
MAX(IF(Persons.Number BETWEEN x AND y, Persons.Number, NULL)) AS max_range_x_y, 
MAX(IF(Persons.Number BETWEEN i AND j, Persons.Number, NULL)) AS max_range_i_j, ...
FROM Persons;
SELECT 
MAX(CASE WHEN Persons.Number BETWEEN x AND y THEN Persons.Number ELSE NULL END) AS max_range_x_y, 
MAX(CASE WHEN Persons.Number BETWEEN i AND j THEN Persons.Number ELSE NULL END) AS max_range_i_j, ...
FROM Persons;
SELECT 
MAX(CASE WHEN id BETWEEN 1 and 100 THEN Number ELSE NULL END) as BoardMax,
MAX(CASE WHEN ID BETWEEN 1001 and 3000 THEN Number ELSE null END) as ChildMax,
MAX(CASE WHEN ID BETWEEN 3001 and 7000 THEN Number ELSE null END) as ParentMax
from 
Persons