需要一些关于选择max或Top 1记录的SQL建议吗
我正在尝试编辑Crystal Reports SQL表达式,其中原始设计器使用以下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
(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列,我认为应该使用它来解决时间戳冲突。