【问题标题】:Enumerating records by date按日期枚举记录
【发布时间】:2017-03-09 00:32:09
【问题描述】:

假设我们有 5 条在特定日期售出的商品记录

Date of Purchase             Qty
2016-11-29 19:33:50.000       5
2017-01-03 20:09:49.000       4
2017-02-23 16:21:21.000       11
2016-11-29 14:33:51.000       2
2016-12-02 16:24:29.000       4

我想用这样的额外列按日期依次枚举每条记录:

Date of Purchase             Qty      Order
2016-11-29 19:33:50.000       5         1
2017-01-03 20:09:49.000       4         3
2017-02-23 16:21:21.000       11        4
2016-11-29 14:33:51.000       2         1
2016-12-02 16:24:29.000       4         2

请注意 2016 年 11 月 29 日的两个日期如何具有相同的订单号,因为我只想按日期而不是按日期时间对记录进行排序。我如何在纯 SQL 中创建这个额外的列?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    使用dense_rank() 并按dateDateOfPurchase 排序

    select * 
      , [Order] = dense_rank() over (order by convert(date,DateOfPurchase))
    from t
    

    rextester 演示:http://rextester.com/FAAQL92440

    返回:

    +---------------------+-----+-------+
    |   DateOfPurchase    | Qty | Order |
    +---------------------+-----+-------+
    | 2016-11-29 19:33:50 |   5 |     1 |
    | 2016-11-29 14:33:51 |   2 |     1 |
    | 2016-12-02 16:24:29 |   4 |     2 |
    | 2017-01-03 20:09:49 |   4 |     3 |
    | 2017-02-23 16:21:21 |  11 |     4 |
    +---------------------+-----+-------+
    

    【讨论】:

    • 这样一个聪明的解决方案。非常感谢
    • @jgozal 乐于助人!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2014-01-31
    • 2012-11-24
    • 1970-01-01
    相关资源
    最近更新 更多