Sql 如何将OrderID添加到此中?我无法在所有OrderID部分显示错误

Sql 如何将OrderID添加到此中?我无法在所有OrderID部分显示错误,sql,sql-server,Sql,Sql Server,我无法在所有OrderID部分显示错误。我尝试将其添加到顶部,然后再添加子查询,结果显示Ambouius列出错。正确的方法是什么 TABLE SETUP: Customers Table: CustomerID, EmailAddress, Password, FirstName, LastName, ShippingAddressID, BillingAddressID OrderItems Table: ItemID, OrderID, ProductID, ItemPrice, Dis

我无法在所有OrderID部分显示错误。我尝试将其添加到顶部,然后再添加子查询,结果显示Ambouius列出错。正确的方法是什么

TABLE SETUP: 
Customers Table:
CustomerID, EmailAddress, Password, FirstName, LastName, ShippingAddressID, BillingAddressID

OrderItems Table:
ItemID, OrderID, ProductID, ItemPrice, DiscountAmount, DiscountTotal, PriceTotal, ItemTotal, Quantity

Order Table:
OrderID, CustomerID, OrderDate, ShipAmount, TaxAmount, ShipDate, ShipAddressID, CardType, CardNumber,CardExpires, BillingAddressID

CODE:
SELECT c.EmailAddress, MAX(OrderCost) AS 
LargestOrder
FROM Customers c
JOIN ORDERS o ON c.CustomerID = o.CustomerID
JOIN (Select Orders.OrderID, ItemPrice * Quanity AS OrderCost FROM Orders, OrderItems
WHERE OrderItems.OrderID = Orders.OrderID)Largest
ON Largest.OrderID = o.OrderID
GROUP BY c.EmailAddresses

在演示您的问题的脚本中投入一些精力真的很有帮助。这样,就不需要任何人猜测您是如何定义事物和使用实际值的

根据我的猜测,这里有一种方法。注一:有一些技术可以达到同样的效果。cte计算每个订单的总成本,就像您尝试的代码一样。既然你建议使用top,我也用它来演示它的用法。根据订单成本降序抓取第一行顶部,将获得总成本最高的订单。只需将cte加入到订单和客户中,就可以包含您想要的专栏

with cte as (select OrderID, sum(ItemPrice * Quantity) as OrderCost 
  from @OrderItems 
  group by OrderID)
select top 1 Ord.OrderID, Ord.OrderDate, cust.EmailAddress, cte.OrderCost
from cte inner join @Orders as Ord 
  on cte.OrderID = Ord.OrderID
inner join @Customers as Cust 
  on Ord.CustomerID = Cust.CustomerID
order by cte.OrderCost desc; 


每个人都希望你实际上没有保存信用卡信息,因为这在很多方面都是不好的

我看不出有什么不对。“Quanity”有一个拼写错误。这是实际的查询吗?@J.R.Theo还想显示OrderID,如果不将其添加到group by中,他们就无法将其添加到选择列表中。@AaronBertrand啊,谢谢。也许你不想说你想将订单ID添加到“顶部”,而实际上可能无法达到你想要的效果,你能描述一下你想要完成什么吗?我错过了OrderItems,因为它隐藏在一个旧的联接后面,但是查询还有很多其他问题,例如,我在任何地方都看不到SUM。