SQL - 仅限第一条记录

Sam*_*arr 3 sql sql-server stored-procedures

我在存储过程中有以下代码段:

where
((Question = 'SurgicalSectionCompleted' and ChangeTo = 'True') or
(Question = 'MedicalSectionCompleted' and ChangeTo = 'True'))
Run Code Online (Sandbox Code Playgroud)

但是,有时在相关表格中,会有多个条目,其中ChangeTo将为真.至关重要的是,我只根据ChangeTo为True的FIRST记录进行计算.我可以使用哪些SQL命令来执行此操作?有任何想法吗?谢谢.

表中记录的字段是:id,name,personNo,entryTime,question,changeFrom,ChangeTo

Gor*_*off 10

如果只想返回一行,则使用TOP 1.首先,使用ORDER BY:

select top 1 t.*
from t
where Question in ('SurgicalSectionCompleted', 'MedicalSectionCompleted') and 
      ChangeTo = 'True'
order by entryTime asc;
Run Code Online (Sandbox Code Playgroud)

如果你想要每个人的第一个,那么使用row_number():

select t.*
from (select t.*,
             row_number() over (partition by personNo order by entryTime) as seqnum
      from t
      where Question in ('SurgicalSectionCompleted', 'MedicalSectionCompleted') and 
            ChangeTo = 'True'
     ) t
where seqnum = 1;
Run Code Online (Sandbox Code Playgroud)