我有一个包含一些值的项目表,其中包括成本和购买日期。我想要获取每种项目类型中最昂贵的一个项目列表,并按特定项目的购买日期对其进行排序,但结果中不包含购买日期。
我的表格(简化版):
该查询可以按成本排序,每个项目类型的最昂贵的物品排在前面。如果没有
我的表格(简化版):
CREATE TABLE Purchases
(ItemType varchar(25),
Cost int,
PurchaseDate smalldatetime)
以下是我的样本数据:
INSERT INTO Purchases VALUES
('Hat', 0, '2007-05-20 15:22'),
('Hat', 0, '2007-07-01 15:00'),
('Shirt', 3500, '2007-07-30 08:43'),
('Pants', 2000, '2008-07-30 12:00'),
('Pants', 4000, '2009-03-15 07:30'),
('Sweater', 3000, '2011-05-20 15:22'),
('Sweater', 3750, '2012-07-01 22:00'),
('Sweater', 2700, '2014-06-12 11:00'),
('Hat', 4700, '2015-06-29 07:10')
我期望的输出结果(为了更清晰,加上日期):
ItemType MostExpensivePerType
------------------------- --------------------
Shirt 3500 (2007-07-30 08:43)
Pants 4000 (2009-03-15 07:30)
Sweater 3750 (2012-07-01 22:00)
Hat 4700 (2015-06-29 07:10)
我的工作成果:
我已经尝试了各种方法,目前最好的结果是使用以下查询语句:
SELECT
ItemType, MAX(Cost) AS MostExpensivePerType
FROM
Purchases
GROUP BY
ItemType
ORDER BY
MostExpensivePerType DESC
该查询可以按成本排序,每个项目类型的最昂贵的物品排在前面。如果没有
ORDER BY
子句,它们似乎是按字母顺序排序的。我意识到我的查询还需要日期列,但我能否输入并将其“隐藏”在结果中?或者我需要将到目前为止的结果保存在临时表中,并与我的常规表连接?最好的方法是什么? SQL Fiddle在此!