从 SQL 中的多个表返回价格的最大日期的问题
Issues returning max date for price from multiple tables in SQL
第一次发帖,对 SQL 还很陌生,所以请多关照 :D
我有一个 SQL 查询有问题,我正在尝试进行查询以汇总股票清单。
我需要从 StockItem_Pricing Table.
中提取带有最后修改日期的 SalePrice
我已将到目前为止的查询包括在内。
SELECT
sc.ChannelSKU AS 'sku',
cb.Level_LessOrderBook AS 'quantity',
cb.InOrderBook AS 'In Open Orders',
cb.MinimumLevel AS 'Minimum Level',
cb.Level AS 'Stock Level',
si.BarcodeNumber AS 'Barcode Number',
sp.SalePrice AS 'product_price_vat_inc',
sp.SalePrice AS 'Retail Price',
cb.ItemTitle AS 'Title',
sc.Source,
sc.SubSource,
sp.ModifiedDate AS 'LastUpdate'
FROM
Stock_ChannelSKU sc
INNER JOIN
View_CombinedStock cb ON cb.pkStockItemId = sc.fkStockItemId
INNER JOIN
StockItem si ON si.pkStockItemID = sc.fkStockItemId
INNER JOIN
StockItem_Pricing sp ON sp.fkStockItemId = sc.fkStockItemId
WHERE
sc.SubSource = 'UM_8292775'
提前致谢:D
如果您只想要一行,则使用 TOP()
和 ORDER BY
:
select top (1)
sc.ChannelSKU AS sku,
cb.Level_LessOrderBook AS quantity,
cb.InOrderBook AS InOpenOrders,
cb.MinimumLevel AS MinimumLevel,
cb.Level AS StockLevel,
si.BarcodeNumber AS BarcodeNumber,
sp.SalePrice AS product_price_vat_inc,
sp.SalePrice AS RetailPrice,
cb.ItemTitle AS Title,
sc.Source,
sc.SubSource,
sp.ModifiedDate as LastUpdate
from Stock_ChannelSKU sc
inner join View_CombinedStock cb on cb.pkStockItemId = sc.fkStockItemId
inner join StockItem si on si.pkStockItemID = sc.fkStockItemId
inner join StockItem_Pricing sp on sp.fkStockItemId = sc.fkStockItemId
where sc.SubSource = 'UM_8292775'
order by sp.ModifiedDate desc
如果您想要每个 sku 的最新行,则另一种方法是 row_number()
:
select *
from (
select
sc.ChannelSKU AS sku,
cb.Level_LessOrderBook AS quantity,
cb.InOrderBook AS InOpenOrders,
cb.MinimumLevel AS MinimumLevel,
cb.Level AS StockLevel,
si.BarcodeNumber AS BarcodeNumber,
sp.SalePrice AS product_price_vat_inc,
sp.SalePrice AS RetailPrice,
cb.ItemTitle AS Title,
sc.Source,
sc.SubSource,
sp.ModifiedDate as LastUpdate,
row_number() over(partition by sc.ChannelSKU order by sp.ModifiedDate desc) rn
from Stock_ChannelSKU sc
inner join View_CombinedStock cb on cb.pkStockItemId = sc.fkStockItemId
inner join StockItem si on si.pkStockItemID = sc.fkStockItemId
inner join StockItem_Pricing sp on sp.fkStockItemId = sc.fkStockItemId
where sc.SubSource = 'UM_8292775'
) t
where rn = 1
第一次发帖,对 SQL 还很陌生,所以请多关照 :D
我有一个 SQL 查询有问题,我正在尝试进行查询以汇总股票清单。
我需要从 StockItem_Pricing Table.
中提取带有最后修改日期的 SalePrice我已将到目前为止的查询包括在内。
SELECT
sc.ChannelSKU AS 'sku',
cb.Level_LessOrderBook AS 'quantity',
cb.InOrderBook AS 'In Open Orders',
cb.MinimumLevel AS 'Minimum Level',
cb.Level AS 'Stock Level',
si.BarcodeNumber AS 'Barcode Number',
sp.SalePrice AS 'product_price_vat_inc',
sp.SalePrice AS 'Retail Price',
cb.ItemTitle AS 'Title',
sc.Source,
sc.SubSource,
sp.ModifiedDate AS 'LastUpdate'
FROM
Stock_ChannelSKU sc
INNER JOIN
View_CombinedStock cb ON cb.pkStockItemId = sc.fkStockItemId
INNER JOIN
StockItem si ON si.pkStockItemID = sc.fkStockItemId
INNER JOIN
StockItem_Pricing sp ON sp.fkStockItemId = sc.fkStockItemId
WHERE
sc.SubSource = 'UM_8292775'
提前致谢:D
如果您只想要一行,则使用 TOP()
和 ORDER BY
:
select top (1)
sc.ChannelSKU AS sku,
cb.Level_LessOrderBook AS quantity,
cb.InOrderBook AS InOpenOrders,
cb.MinimumLevel AS MinimumLevel,
cb.Level AS StockLevel,
si.BarcodeNumber AS BarcodeNumber,
sp.SalePrice AS product_price_vat_inc,
sp.SalePrice AS RetailPrice,
cb.ItemTitle AS Title,
sc.Source,
sc.SubSource,
sp.ModifiedDate as LastUpdate
from Stock_ChannelSKU sc
inner join View_CombinedStock cb on cb.pkStockItemId = sc.fkStockItemId
inner join StockItem si on si.pkStockItemID = sc.fkStockItemId
inner join StockItem_Pricing sp on sp.fkStockItemId = sc.fkStockItemId
where sc.SubSource = 'UM_8292775'
order by sp.ModifiedDate desc
如果您想要每个 sku 的最新行,则另一种方法是 row_number()
:
select *
from (
select
sc.ChannelSKU AS sku,
cb.Level_LessOrderBook AS quantity,
cb.InOrderBook AS InOpenOrders,
cb.MinimumLevel AS MinimumLevel,
cb.Level AS StockLevel,
si.BarcodeNumber AS BarcodeNumber,
sp.SalePrice AS product_price_vat_inc,
sp.SalePrice AS RetailPrice,
cb.ItemTitle AS Title,
sc.Source,
sc.SubSource,
sp.ModifiedDate as LastUpdate,
row_number() over(partition by sc.ChannelSKU order by sp.ModifiedDate desc) rn
from Stock_ChannelSKU sc
inner join View_CombinedStock cb on cb.pkStockItemId = sc.fkStockItemId
inner join StockItem si on si.pkStockItemID = sc.fkStockItemId
inner join StockItem_Pricing sp on sp.fkStockItemId = sc.fkStockItemId
where sc.SubSource = 'UM_8292775'
) t
where rn = 1