【发布时间】:2015-05-08 05:24:26
【问题描述】:
有两个表,OrderID 和 Order Details。
订单:
OrderID PK
Freight
|....|
订单详情:
OrderID PK FK
ProductID PK FK
UnitPrice
Quantity
|....|
每个OrderID 对于Orders 来说都是唯一的,但订单详细信息可以包含相同OrderID 和不同ProductId、UnitPrice 等的多个详细信息。
因此,在订单详情中,我们可以看到两个、三个或更多订单 (OrderID)。
我的任务是选择所有运费记录的物理地址,这些记录超过整个订单运费的总成本 > 单价 * 数量 *(订单详细信息中的 OrderID 数量)
SELECT %%physloc%%
FROM Orders
WHERE Freight > (SELECT SUM(UnitPrice * Quantity)
FROM [Order Details]
GROUP BY OrderID);
当然我有
'子查询返回超过 1 个值...'
我尝试使用 Top,但在这种情况下,我的选择有误。
我所需要做的就是以某种方式将每个 Freight 与 OrderID 记录与该子查询中具有相同 OrderID 的每个记录进行比较。但我不知道怎么做。
也许有人可以找到不同的方式,那就太好了。
我使用 SQL Server 2008
谢谢大家。
【问题讨论】:
标签: sql sql-server database tsql