3

我的一个报告程序突然失败,并将其追溯到我的陈述部分。直到 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 列中没有 NULL 值。

4

1 回答 1

1

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

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 存储为 a datetime,而不是 a 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))
于 2012-10-24T19:16:21.623 回答