使用MAX函数获得范围之间的最大值

时间:2014-10-15 14:59:25

标签: sql-server sql-server-2008 tsql

对tsql函数来说很新,我正在尝试编写一个为STC_STATUS的{​​{1}}返回STC_STATUS_DATE的值。我现在就拥有它,如果有STC_STATUS_DATE is <= the STC_START_DATE+9,它会返回一个空值。

STC_STATUS > stc_start_date+9

非常感谢任何帮助。

编辑:每个建议的样本数据:

enter image description here

该函数返回一个空值,因为pos 1的stc_status日期大于 SELECT @Result1 = STC_STATUS FROM STC_STATUSES ss LEFT OUTER JOIN STUDENT_ACAD_CRED stc ON ss.STUDENT_ACAD_CRED_ID = stc.STUDENT_ACAD_CRED_ID WHERE ss.STUDENT_ACAD_CRED_ID = ISNULL(@student_acad_cred_id, '0') AND MAX(ss.STC_STATUS_DATE) <= DATEADD(day,9,stc.STC_START_DATE) 。我的目标是让函数做的是返回stc_start_date+9下面的最新状态日期,这个样本中的记录为2。

1 个答案:

答案 0 :(得分:0)

您可以使用TOP 1来获得正确的结果

      SELECT TOP 1 @Result1 = STC_STATUS
      FROM  STC_STATUSES ss
      LEFT  OUTER JOIN STUDENT_ACAD_CRED stc 
            ON ss.STUDENT_ACAD_CRED_ID = stc.STUDENT_ACAD_CRED_ID
      WHERE ss.STUDENT_ACAD_CRED_ID = ISNULL(@student_acad_cred_id, '0') 
            AND ss.STC_STATUS_DATE <= DATEADD(day,9,stc.STC_START_DATE)
      ORDER BY ss.STC_STATUS_DATE desc