每件商品的最后订单价格
Last Order Per Item with Price
我正在使用 Microsoft SQL,更具体地说是使用 LinnWorks 进行订单管理。我想提取每个 [SKU] 的最后一个订单和为此支付的 [Price]。到目前为止,我已经得到了,但我认为我的方法是不正确的,因为我为每个支付的价格得到不同的行。
这是 LinnWorks Table 布局;
这是我试过的,在加价之前效果很好;
SELECT
si.ItemNumber AS [SKU],
DATEDIFF("d",MAX(o.dReceievedDate), GETDATE()) AS [Last Ordered],
oi.fpricePerUnit AS [Price],
si.RetailPrice AS [MSRP]
FROM [Order] o
INNER JOIN OrderItem oi
on o.pkOrderID = oi.fkOrderID
LEFT OUTER JOIN StockItem si
on si.pkstockItemId = oi.fkStockItemID_processed
WHERE o.Source = 'EBAY'
GROUP BY si.ItemNumber, oi.fpricePerUnit, si.RetailPrice
明白为什么会这样(分组),但不知道解决问题的方法
;WITH CTE AS
(
SELECT
si.ItemNumber AS [SKU],
DATEDIFF("d",o.dReceievedDate, GETDATE()) AS [Last Ordered],
row_number() over (PARTITION BY si.ItemNumber, oi.fpricePerUnit, si.RetailPrice
ORDER BY o.dReceievedDate DESC) rn,
oi.fpricePerUnit AS [Price],
si.RetailPrice AS [MSRP]
FROM [Order] o
INNER JOIN OrderItem oi
on o.pkOrderID = oi.fkOrderID
LEFT OUTER JOIN StockItem si
on si.pkstockItemId = oi.fkStockItemID_processed
WHERE o.Source = 'EBAY'
)
SELECT * FROM CTE WHERE rn = 1
我正在使用 Microsoft SQL,更具体地说是使用 LinnWorks 进行订单管理。我想提取每个 [SKU] 的最后一个订单和为此支付的 [Price]。到目前为止,我已经得到了,但我认为我的方法是不正确的,因为我为每个支付的价格得到不同的行。
这是 LinnWorks Table 布局;
这是我试过的,在加价之前效果很好;
SELECT
si.ItemNumber AS [SKU],
DATEDIFF("d",MAX(o.dReceievedDate), GETDATE()) AS [Last Ordered],
oi.fpricePerUnit AS [Price],
si.RetailPrice AS [MSRP]
FROM [Order] o
INNER JOIN OrderItem oi
on o.pkOrderID = oi.fkOrderID
LEFT OUTER JOIN StockItem si
on si.pkstockItemId = oi.fkStockItemID_processed
WHERE o.Source = 'EBAY'
GROUP BY si.ItemNumber, oi.fpricePerUnit, si.RetailPrice
明白为什么会这样(分组),但不知道解决问题的方法
;WITH CTE AS
(
SELECT
si.ItemNumber AS [SKU],
DATEDIFF("d",o.dReceievedDate, GETDATE()) AS [Last Ordered],
row_number() over (PARTITION BY si.ItemNumber, oi.fpricePerUnit, si.RetailPrice
ORDER BY o.dReceievedDate DESC) rn,
oi.fpricePerUnit AS [Price],
si.RetailPrice AS [MSRP]
FROM [Order] o
INNER JOIN OrderItem oi
on o.pkOrderID = oi.fkOrderID
LEFT OUTER JOIN StockItem si
on si.pkstockItemId = oi.fkStockItemID_processed
WHERE o.Source = 'EBAY'
)
SELECT * FROM CTE WHERE rn = 1