SQL使用临时表中的order by和group by选择Distinct

时间:2012-08-30 13:55:45

标签: sql

我正在努力获得客户销售的所有商品的最后售价。我需要的物品必须只属于某一类别(租赁)。

我遇到的问题是,我无法按日期排序,然后选择不同,以便它会给我一个不同的项目列表和他们最近的销售价格。

我一直在使用最终看起来像这样的临时表:

Item_Number | Item_Price |日期

Item1 | 29.00 | 2012-08-29 00:00:00.000

Item1 | 20.00 | 2012-08-29 00:00:00.000

Item2 | .35 | 2012-08-29 00:00:00.000

Item1 | 7.00 | 2012-08-27 00:00:00.000

Item2 | 5.00 | 2012-08-27 00:00:00.000

这是按日期和价格排序的临时表,然后按项目编号分组。

我现在要做的是从此临时表中选择项目编号的不同,以便抓取顶部项目编号和价格并将其放入网格中。所以它看起来像这样:

Item_Number | Item_Price |日期

Item1 | 29.00 | 2012-08-29 00:00:00.000

Item2 | .35 | 2012-08-29 00:00:00.000

如果item2在29日没有新的销售,它将进入下一个最新日期并抓住该行:

Item2 | 5.00 | 2012-08-27 00:00:00.000

代替:Item2 | .35 | 2012-08-29 00:00:00.000

我不知道我是不是只是在思考这个问题,或者说它现在给我带来了麻烦。任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

使用MAX()获取给定商品的最后销售价格,然后仅获取销售日期等于MAX()结果的行的行:

SELECT item_number, item_price, date
FROM tbl t
WHERE date = (SELECT MAX(tmp.date)
              FROM tbl tmp
              WHERE tmp.item_number = t.item_number)