需要一些关于选择max或Top 1记录的SQL建议吗

需要一些关于选择max或Top 1记录的SQL建议吗,sql,sql-server,database,crystal-reports,Sql,Sql Server,Database,Crystal Reports,我正在尝试编辑Crystal Reports SQL表达式,其中原始设计器使用以下SQL表达式从驱动器中提取注释: (select max(Text) from rpt_NotesDetail where DriveID="DriveMaster"."DriveID" and Reason in (select codeid from rpt_QuickCodes where DescShort

我正在尝试编辑Crystal Reports SQL表达式,其中原始设计器使用以下SQL表达式从驱动器中提取注释:

(select max(Text) from rpt_NotesDetail 
 where DriveID="DriveMaster"."DriveID" and
        Reason in (select codeid 
                   from rpt_QuickCodes 
                   where DescShort like N'Publicity'))
我们不希望它拉最大值(文本),我们希望它根据createdate字段抓取NotesDetail表中的最新(或最新)注释

我尝试了两种方法来处理此问题,但两种方法都出现了错误:

(select (Text) from rpt_NotesDetail 
 where DriveID="DriveMaster"."DriveID"
 and createdate = (select max(createdate) 
                   from rpt_notesdetail 
                   where DriveID="DriveMaster"."DriveID")
                   and Reason in (select codeid 
                                  from rpt_QuickCodes 
                                  where DescShort like N'Publicity'))


(select (Text) 
 from rpt_NotesDetail 
  where DriveID="DriveMaster"."DriveID"
    and createdate = (select top 1 createdate 
                      from rpt_notesdetail 
                      where DriveID="DriveMaster"."DriveID" 
                      order by "drivemaster"."fromdatetime" desc)
    and Reason in (select codeid 
                   from rpt_QuickCodes 
                   where DescShort like N'Publicity'))
这两个表达式都给了我以下错误: 子查询返回了多个值。当子查询在=、!=、=、之后时,不允许这样做,或者当子查询用作表达式时


不确定此错误的原因是什么,有什么建议吗?

“此错误的原因”明确说明:“子查询返回的值超过1”。对于同一个DriveID,有多行具有相同的最大createdate。这些查询前面的代码是什么,是否填充了变量?谢谢,直到这篇文章,我才意识到createdate字段只接收时间戳上的日期,而不是时间。这个表中还有一个NoteID列,我认为应该使用它来解决时间戳冲突。