Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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 - Fatal编程技术网

将两个不同表中的两列相乘后查找最大值-SQL

将两个不同表中的两列相乘后查找最大值-SQL,sql,Sql,我正试图找到一种正确的方法,在将不同表中的2列相乘后找到最大值: 订单(OID、PID、数量、日期) 产品(PID、Pname、价格、类别、子类别)。 我需要找出哪个OID的订单总额最高。 我试过这个: SELECT OID, OrderAmount FROM Orders WHERE OrderAmount=(SELECT MAX(OrderAmount) from Orders (SELECT Orders.OID, OrderAmount=Products.Price*Orders.Qua

我正试图找到一种正确的方法,在将不同表中的2列相乘后找到最大值: 订单
(OID、PID、数量、日期)
产品
(PID、Pname、价格、类别、子类别)
。 我需要找出哪个OID的订单总额最高。 我试过这个:

SELECT OID, OrderAmount
FROM Orders
WHERE OrderAmount=(SELECT MAX(OrderAmount) from Orders
(SELECT Orders.OID, OrderAmount=Products.Price*Orders.Quantity
FROM Orders
INNER JOIN Products ON Orders.PID=Products.PID); 
也许有更有效的解决办法?
提前谢谢大家

方法1:
聚合
函数

SELECT TOP 1 OID, MAX(OrderAmount) MaxOrderAmount
FROM (
       SELECT Orders.OID, OrderAmount = Products.Price * Orders.Quantity
       FROM Orders INNER JOIN Products ON Orders.PID=Products.PID
     ) X GROUP BY OID
方法1:
行数
概念

SELECT TOP 1 OID, OrderAmount AS MaxOrderAmount
FROM (
       SELECT Orders.OID, OrderAmount = Products.Price * Orders.Quantity
              ROW_NUMBER() OVER(ORDER BY Products.Price * Orders.Quantity) RN
       FROM Orders INNER JOIN Products ON Orders.PID=Products.PID
     ) X WHERE RN = 1

方法1:
聚合
函数

SELECT TOP 1 OID, MAX(OrderAmount) MaxOrderAmount
FROM (
       SELECT Orders.OID, OrderAmount = Products.Price * Orders.Quantity
       FROM Orders INNER JOIN Products ON Orders.PID=Products.PID
     ) X GROUP BY OID
方法1:
行数
概念

SELECT TOP 1 OID, OrderAmount AS MaxOrderAmount
FROM (
       SELECT Orders.OID, OrderAmount = Products.Price * Orders.Quantity
              ROW_NUMBER() OVER(ORDER BY Products.Price * Orders.Quantity) RN
       FROM Orders INNER JOIN Products ON Orders.PID=Products.PID
     ) X WHERE RN = 1

使用“内部联接然后按top分组”语句,在单个select语句中不需要任何子查询选择top 1 max(Products.Price*Orders.Quantity)作为TOrderAmount,Orders.OID from Orders内部联接Orders上的产品。PID=Products.PID group by Orders.OID order by TOrderAmount desc;使用“内部联接然后按top分组”语句,在单个select语句中不需要任何子查询选择top 1 max(Products.Price*Orders.Quantity)作为TOrderAmount,Orders.OID from Orders内部联接Orders上的产品。PID=Products.PID group by Orders.OID order by TOrderAmount desc;