按日期和时间选择最新的行

时间:2016-09-05 00:14:36

标签: sql sql-server sql-server-2008

我每天都在桌子上进行大量的转换。 我想只在当天发生最后交易。

我想要复制this,但我不能在我自己的

上实现它

这是我的脚本

Int

这是我目前的结果

enter image description here

这是我想要的输出

enter image description here

我怎样才能仅使用datetime获取当天发生的最后一笔交易?

3 个答案:

答案 0 :(得分:1)

如果您有一列指定一天内的订单,那么您可以执行以下操作:

SELECT sh.*
FROM (SELECT sh.*,
             ROW_NUMBER() OVER (PARTITION BY product_id, CAST(date_track as DATE)
                                ORDER BY date_track DESC
                               ) as seqnum
      FROM stocks_history sh
      WHERE product_id = 30 AND 
            date_track between '2016-09-02' and '2016-09-05'
     ) sh
WHERE seqnum = 1;

如果您有另一个具有排序的列,请将其用于ORDER BY

答案 1 :(得分:1)

SELECT TOP 1
product_id
,product_name
,stock_on_hand
,stock_in
,stock_out
,date_track
FROM stocks_history
WHERE
product_id = 30
AND
date_track between '9/1/16' and '9/9/16'
order by date_track asc

答案 2 :(得分:0)

如果stocks_history表的date_track字段支持日期输入,那么ORDER BY可以解决问题。您可以尝试以下查询:

SELECT product_id          ,产品名称          ,stock_on_hand          ,stock_in          ,脱销          ,date_track 来自stocks_history 在'9/1/16'和'9/9/16'之间,product_id = 30 AND date_track ORDER BY date_track DESC