SQL语句选择最新日期不再工作



我在一个报告例程中突然失败,并将其追溯到我的陈述的一部分。直到2天前,一直在服务的功能一直从dbo.data_feed_file表(列名称:File_Date)中选择最新日期。

语句遵循

HAVING (dbo.data_feed_file.file_date = (Select MAX(File_Date) as Expr1
                                        FROM dbo.data_feed_file AS data_feed_file_1))

首先:还有另一种写作方法吗?我已经通过删除声明来完成报告的工作,这比我想要的只有250万行。我知道我可以硬编码日期,以提取我想要的特定日期,但是自动化显然是首选的。

第二:有人知道是什么会导致自发失败?我是唯一可以访问此查询的人,所以我知道什么都没有改变(没有什么,什么也没有改变)。

预先感谢。

编辑:要添加澄清:没有错误消息,列标题显示为预期,但没有数据填充,只是空白字段(好像没有任何符合有条件的标准)。该声明好像没有错。我已经确认file_date列中没有零值。

我可以想到没有行返回的两个原因。首先是子查询返回零。这很容易固定为:

HAVING (dbo.data_feed_file.file_date = (Select MAX(File_Date) as Expr1
                                        FROM dbo.data_feed_file AS data_feed_file_1
                                        where file_date is not null))

第二个是File_date存储为datetime,而不是date。如果是这样,您可能会有一个where子句,该子句过滤了最新值,并且在having子句中丢失了它。如果您打算日期,但是该值存储为日期,则可以尝试:

HAVING (cast(dbo.data_feed_file.file_date as date) =
                                        (Select cast(MAX(File_Date) as date) as Expr1
                                        FROM dbo.data_feed_file AS data_feed_file_1
                                        where file_date is not null))

最新更新