我从几个不同的表中提取数据,以提供以下示例数据。为了简单起见,示例数据只显示了一个orderid。我需要做的是获取orderid的最高价格行,但是我还需要查看与该特定行关联的其他id,如下面的期望结果表所示。我有什么办法可以做到这一点吗?
我正在sql中创建一个数据视图,如果可能的话,我想在一个视图中完成这一切。
当前代码
SELECT Items.OrderID, Items.ItemID, Items.Code, Price.Price
FROM Items LEFT OUTER JOIN
Codes ON Items.Code = Codes.Code LEFT OUTER JOIN
ItemCategories ON Codes.CategoryID = ItemCategories.CategoryID LEFT OUTER JOIN
Price ON Codes.CodeGrouping = Price.CodeGrouping
WHERE (YEAR(Items.Date) = YEAR(GETDATE()) OR
YEAR(Items.Date) = YEAR(GETDATE()) - 1) AND (ItemCategories.CategoryID = 1) AND (Items.OrderID_Status = 3)
样本数据
OrderID ItemID Code Price
--------------------------------------
454646 429264 12121 833
454646 429677 6116 1
454646 431168 194 719
454646 431248 6078 1
454646 432023 455 1030
期望结果
OrderID ItemID Code Max_Price
-----------------------------------------------------
454646 432023 455 1030
提前谢谢!
1条答案
按热度按时间q35jwt9p1#
我建议你
row_number()
,因为很容易将其集成到现有查询中:在原始查询中:
请注意,我稍微更改了查询:
对日期的过滤可以优化-不要对日期列应用日期函数(它排除了列上现有的索引)
表别名使查询更易于编写和读取