【问题标题】:T-SQL (Looking for a way to find new records added under new date range)T-SQL(寻找一种方法来查找在新日期范围下添加的新记录)
【发布时间】:2014-03-11 22:45:49
【问题描述】:

我有一个编译记录的表,每条记录都有一个与记录关联的数据。例如我最近的数据范围是2014-2-8 我的第二个数据范围是2014-1-6,这个查询将被放在一个报告中,所以我希望代码是动态的。

我可以使用

计算出最大日期
select max((alias.date)) 
from table as alias1 
where alias.date = alias1.date

我的最终游戏是使用idproductnamedate 编写一个选择,最新数据范围内的任何新产品都会拉入查询。

基本上任何与最大日期相关的产品都会与第二个到最大日期进行比较(对不起,我知道是愚蠢的)并生产这些产品。

我希望这是有道理的。

非常感谢。

【问题讨论】:

  • 你能再分享一些代码/模式吗?到目前为止你尝试了什么?您的查询中的 alias1 是什么?
  • 我的表有 3 列。 ProductId、产品和日期。每当我设置 ETL 时,我总是会构建一个 varchar 日期列来引用我的列。因此,基本上我正在尝试将产品与最大日期与产品 1 小于最大日期进行比较。我可以写像 WHERE r.PDate = (SELECT MAX((r1.PDate)) from [dbo].[RawData] as r1 where r.PDate = r1.PDate) 这样的片段来获得最大范围,但它并没有聚集在一起我。我在想可能是 select max data 和 select

标签: sql sql-server date


【解决方案1】:

如果您只想要日期最高的行:

MSSQL: select top 1 * from table order by datefield desc
MySQL: select * from table order by datefield desc limit 1

【讨论】:

  • @thepirat000 WITH Reportdate_CTE (PublicationName, PubID, ReportDate) AS ( SELECT PublicationName, PubID, (ROW_NUMBER() OVER(PARTITION By PubID ORDER BY ReportDate Asc)) as ReportDate1 FROM [Client].[TSA_RawData] as r ) SELECT PublicationName, PubID, ReportDate FROM ReportDate_CTE as CTE GROUP BY PublicationName, ReportDate, PubID ORDER BY ReportDate Desc
  • 基本上我有 3 列上面列出的内容。每次我加载一组新记录时,这些记录都有我加载它们的日期。例如,今天可以加载 61,000 条记录,例如,它们旁边都有今天的日期。 PubID 2000、PubName 杂志和日期 2014-3-7(日期数据类型)。我试图从本质上提取所有具有最大数据和最大日期 -1 的记录。然后用比较出版物名称。我刚开始使用 CTE 和行号,所以我还在苦苦挣扎。感谢您的帮助!
  • 如果你想要 2 行,使用top 2
  • 我希望撤回所有具有最大日期和最大日期 -1 的行,而不仅仅是前两行。
  • 这就是你按日期字段降序排序的原因。您甚至根本没有尝试我的答案中的查询吗?如果按日期字段降序排序,然后拉出前 2 行,那会是什么?这将是具有最大日期的行和具有次高日期的行。
猜你喜欢
  • 2017-11-10
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2010-12-30
  • 2012-01-20
  • 1970-01-01
相关资源
最近更新 更多