在SQL Server 2014中查询报表(我需要表的最后一行)
我使用的是SQL Server 2014,我的查询有问题 我希望在我的报告中包含订单中在SQL Server 2014中查询报表(我需要表的最后一行),sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我使用的是SQL Server 2014,我的查询有问题 我希望在我的报告中包含订单中ID\u order=9已交付的所有项目。对于已经两次交付的项目(例如,项目代码=Art3),我只想得到最后一行,这意味着这个项目的最后一次交付,没有重复 我已经尝试了这两个查询,但没有成功: 尝试#1:不同 SELECT DISTINCT Order.ItemCode, Delivery. Qty, Delivery.ID_Delivery, Order.ID_Order FROM
ID\u order=9
已交付的所有项目。对于已经两次交付的项目(例如,项目代码=Art3),我只想得到最后一行,这意味着这个项目的最后一次交付,没有重复
我已经尝试了这两个查询,但没有成功:
尝试#1:不同
SELECT DISTINCT
Order.ItemCode, Delivery. Qty, Delivery.ID_Delivery,
Order.ID_Order
FROM
Delivery
INNER JOIN
Order ON Order.ID_Order = Delivery.ID_Order
WHERE
Order.ID_Order = '9'
尝试#2:子查询
SELECT *
FROM
(SELECT
Order.ItemCode, Delivery.Qty,
FROM
Delivery
INNER JOIN
Order ON Order.ID_Order = Delivery.ID_Order
WHERE
Order.ID_Order = '9')
GROUP BY
a.ItemCode, a.Qty
请尝试此查询--
我希望它能对您起作用。我无法理解的是,您为什么要放弃
ar2
以id\u delivery=23
。条件是什么。您的要求是什么?选择上次交货的标准是什么?根据什么可以判断最后一次交货?或者如果您只是想要得到想要的结果,那么只需在id\u订单、itemcode
和上进行分组,然后选择max(id\u交货)、max(数量)和其他列
。
;WITH CTE
AS (
SELECT C.ID_Order
,D.ID_Delivery
,C.ItemCode
,C.Quantity
,ROW_NUMBER() OVER (
PARTITION BY C.ItemCode ORDER BY D.ID_Delivery DESC
) AS RowNum
FROM Customer_Order C
INNER JOIN Delivery D ON C.ID_Order = D.ID_Order
AND C.ItemCode = D.ItemCode
WHERE C.ID_Order = 9
)
SELECT ID_Order
,ID_Delivery
,ItemCode
,Quantity
FROM CTE
WHERE RowNum = 1
SELECT
Order.ItemCode, Delivery. Qty, Delivery.ID_Delivery,
Order.ID_Order
FROM
Delivery
INNER JOIN
Order ON Order.ID_Order = Delivery.ID_Order
WHERE
Order.ID_Order = '9'
AND Delivery.ID_Delivery IN
(
SELECT MAX(ID_Delivery) FROM Delivery D WHERE D.ID_Order = Delivery.ID_Order GROUP BY D.ID_Order
)