我有一个数据表:
ProductNum | ProductVariation | Past_Price | Current_Price | Order_Date
------------ ------------------ ------------ --------------- ---------------------
1 33 96.05 100.10 2014-01-01 00:00:00
1 33 97.65 100.10 2014-12-03 12:34:52
1 33 98.98 100.10 2015-01-02 05:50:32
1 33 99.98 100.10 2016-03-02 06:50:43
1 33 100.01 100.10 2016-12-12 06:05:43
1 33 100.05 100.10 2017-01-02 05:34:43
我想知道是否可以查询这些行,以便得到最接近12月31日{year}的行?
所以输出是:
ProductNum | ProductVariation | Past_Price | Current_Price | Order_Date
------------ ------------------ ------------ --------------- ---------------------
1 33 98.98 100.10 2015-01-02 05:50:32
1 33 99.98 100.10 2016-03-02 06:50:43
1 33 100.01 100.10 2017-01-02 05:34:43
每个订单最接近12月31日,{年}年:201420152016
4条答案
按热度按时间piwo6bdm1#
你可以用这个。这将避免硬编码和复制粘贴工会。
我用了以下小提琴:
wko9yo5t2#
你似乎真的想要在年底后的第一次约会:
taor4pac3#
得到
row_number()
按绝对值排序的每年datediff()
在订单日期和一年中的31-12日之间。然后选择其中一个行号等于的所有行1
.db<>小提琴
lokaqttq4#
您可以按日期差排序,并获得每年的前1行。
对于sqlserver:
你可以随意改变12月31日的时间。
对于mysql: