【问题标题】:How to select first value - SQL Server [duplicate]如何选择第一个值 - SQL Server [重复]
【发布时间】:2019-12-17 07:31:08
【问题描述】:

我想为每张发票选择第一个日期,如下所示:

这是我的数据:

EC_Refpiece | EC_Date
FA0001      | 01/01/2019
FA0001      | 25/08/2018
FA0002      | 12/01/2019
FA0002      | 15/04/2017

这就是我想要的结果:

EC_Refpiece | EC_Date
FA0001      | 25/08/2018
FA0002      | 15/04/2017

【问题讨论】:

  • 请向我们展示您的代码并指出您不明白的地方。
  • 如果您只想要第一次约会,请使用简单的GROUP BYMIN。您是否正在寻找不同的东西?
  • @Rahul 我先用谷歌搜索了它,但没有得到我想要的结果!无论如何,如果你不能帮助,至少不要消极。谢谢你。 :)
  • 好的,这是我在谷歌select first date from a bunch of records sql server 上写的,这是我得到的第一个链接:stackoverflow.com/questions/5736820/…。不是消极的,但您需要自己尝试解决问题,然后发布问题。
  • @Rahul 好的,先生,我的错!谢谢您的帮助。 :)

标签: sql-server


【解决方案1】:

如果你想选择第一个,即最小日期,你只需要一个简单的 GROUP BY:

select EC_Refpiece, MIN(EC_DATE)
from ThatTable
group by EC_Refpiece

如果你想检索第一行,你可以使用ROW_NUMBER

   with invoices as 
   (
       select 
           EC_Refpiece,
           EC_Date,
           ....           
           ROW_NUMBER() OVER (partition by EC_Refpiece order by EC_Date) RN
       from ThatTable
   )
   select * from invoices
   where RN=1

ROW_NUMBER 根据PARTITION BY 子句对结果进行分区,并在根据ORDER BY 子句对所有结果进行排序后,计算每个分区的顺序行号

【讨论】:

  • 非常感谢,MIN 函数运行良好。
【解决方案2】:

我认为这应该可以完成工作:

SELECT EC_Refpiece, MIN(EC_date)
FROM table
GROUP BY EC_Refpiece

【讨论】:

  • 非常感谢,MIN 函数运行良好。
猜你喜欢
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
相关资源
最近更新 更多