【发布时间】:2017-10-11 16:59:20
【问题描述】:
所以我有两张桌子
一个是包含以下列的“订单”
- OrderID (int)(主键)
- 客户 ID (nchar(5))
- OrderDate(日期时间)
其次是包含以下列的“订单详情”
- 订单 ID(整数)
- 产品ID(整数) 1 和 2 组合是此表的主键。
- 单价(金钱)
- 数量(smallint)
- 折扣(真实)
现在编写一个查询,找出订单中价格最高的产品的 OrderId、ProductId、OrderDate 和 UnitPrice。
产品的价格计算为 (UnitPriceQuantity - DiscountUnitPrice*Quantity)。 必须对“Orders”中的每个 OrderID 执行该操作。
我正在放置示例数据。这里是输入表“订单”-
OrderID CustomerID OrderDate
1000 1 11-09-2016
1001 1 12-10-2016
这里是另一个输入表“订单详情”-
OrderID ProductID UnitPrice Quantity Discount
1000 11 5 15 0.0
1000 13 25 2 0.0
1000 14 7 11 0.0
1001 5 30 3 0.0
1001 6 50 2 0.12
这是预期的输出
OrderID ProductID OrderDate UnitPrice
1000 14 11-09-2016 7
1001 5 12-10-2016 30
我已经尝试过使用 Joins。这是我尝试过的查询
DECLARE @OID INT=10248;
SELECT d.OrderID,d.ProductID,d.UnitPrice
INTO #Temp3
from [Order Details] d
INNER JOIN
(Select TOP 1 OrderID,ProductID,MAX(UnitPrice*Quantity-UnitPrice*Discount*Quantity)as Maxi from [Order Details]
where OrderID=@OID
GROUP BY OrderID,ProductID
ORDER BY Maxi DESC) e ON e.OrderID=d.OrderID and e.ProductID=d.ProductID;
select T.OrderID,T.ProductID,o.OrderDate,T.UnitPrice
from Orders o
INNER JOIN #Temp3 T
ON o.OrderID=T.OrderID;
这个查询的唯一问题是我必须提供 OrderID。我希望它为“订单”中的每个 OrderID 执行
【问题讨论】:
-
good..阅读
joins 并先尝试一下,如果遇到困难,请发布问题。 -
请Edit您的问题并添加一些示例数据和基于该数据的预期输出。 Formatted text 请no screen shots。 edit 您的问题不要在 cmets 中发布代码或其他信息。
-
根据问题中的语法添加了
sql-server和tsql标签
标签: sql sql-server tsql