Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 server 如何返回select语句的最大值_Sql Server_Aggregate Functions - Fatal编程技术网

Sql server 如何返回select语句的最大值

Sql server 如何返回select语句的最大值,sql-server,aggregate-functions,Sql Server,Aggregate Functions,好的,我要做的是返回select语句的最大值 声明的内容如下: SELECT SUM([Order Details].UnitPrice*[Order Details].Quantity) as total, Products.SupplierID FROM [Order Details], Products GROUP By Products.SupplierID; 它返回一个值列表,其中包含每个供应商从销售中获得的收入 当我将语句更改为 SELECT MAX

好的,我要做的是返回select语句的最大值

声明的内容如下:

SELECT 
    SUM([Order Details].UnitPrice*[Order Details].Quantity) as total, 
    Products.SupplierID
 FROM [Order Details], Products GROUP By Products.SupplierID;
它返回一个值列表,其中包含每个供应商从销售中获得的收入

当我将语句更改为

SELECT 
    MAX([Order Details].UnitPrice*[Order Details].Quantity) as total, 
    Products.SupplierID
 FROM [Order Details], Products GROUP By Products.SupplierID;
它为每个供应商返回相同的值,这不是我想要的,我只希望语句返回收入最高的SupplierID

我会注意到这是一项任务,但不是全部

作业内容如下

在Northwind数据库中列出的所有供应商中,根据数据库中的所有订单,找到总收入最高的供应商

编写一个用户定义的标量函数MaxSupplier,该函数输出一个值:根据上述规则选择的供应商的名称。如果有多个供应商符合资格,则从这些候选供应商中随机选择一个。您可能需要研究SQL Server上可用的函数


老实说,我只是想知道如何获得最大值,不需要其他任务的帮助

也许这里最简单的解决方案是使用
TOP
ORDER BY

SELECT TOP 1
    Products.SupplierID
    SUM([Order Details].UnitPrice*[Order Details].Quantity) AS total
FROM [Order Details], Products
GROUP BY
    Products.SupplierID
ORDER BY
    total DESC;
如果您使用的是早于2008年的SQL Server版本,则必须重复
ORDER BY
子句中的全和表达式。如果您还希望返回与最高总数相关的所有记录,请使用以下命令:

SELECT TOP 1 WITH TIES

另一个注意事项是,您似乎正在两个表之间进行交叉联接。如果不打算这样做,则使用显式联接,并启用条件。

请学习如何联接表!要记住的一个技巧是不要在表名之间使用逗号。您的结果将是错误的,因为您将两个表的每一行相乘。