选择最近的不同

时间:2016-03-29 17:33:49

标签: sql ms-access greatest-n-per-group

我正在编写SQL Server中的报告,但似乎无法正确使用它。如何返回一个独特的JNJobID最新加入我的Jobs表的JNNote?

for (*i2 = 0; *i2<10; (*i2)++)
{
    if (*i2>4)
    {
        *z2 = *i2;
        *b2++;
            break;
    }
}
printf("%d%c\n", b2, ch[z]);

工作表

Select
    JobNotesID  
   ,JNJobID 
   ,JNDate      
   ,JNNote
From [JobNotes] Left JOIN Jobs ON [JobNotes].JNJobID = Jobs.JobID 

JobNotes表

JobID   ProjectNum     
 6972   PN1
 6973   PN2
 6974   PN3 

会返回

JobNotesID  JNJobID JNDate                       JNNote    
 11800      6972    2016-03-15 00:00:00.000     Example 1
 11874      6972    2016-03-17 00:00:00.000     Example 2
 12181      6972    2016-03-25 00:00:00.000     Example 3
 12006      6973    2016-03-21 00:00:00.000     Example 4
 11961      6974    2016-03-18 00:00:00.000     Example 5
 11924      6974    2016-03-17 00:00:00.000     Example 6

1 个答案:

答案 0 :(得分:-1)

您可以使用max()的分析版本来帮助识别每个ID最新的行。这需要CTE或内联视图:

select
  n.JNNote
from (
    select *, max(JNDate) over (partition by JNJobID) as maxDate
    from JobNotes
  ) n
where n.JNDate = n.maxDate

这确实假设在同一天同一份工作从来没有两个笔记。