2016-03-29 28 views
-1

SQL Server'da bir rapor üzerinde çalışıyorum ancak doğru görünmüyor gibi görünmüyor. İşlerim tablosuna eklenen benzersiz bir JNJobID'nin en yeni JNNote'unu nasıl iade edebilirim?En son farklı olanı seçin

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

İşler Tablo

JobID ProjectNum  
6972 PN1 
6973 PN2 
6974 PN3 

JobNotes Tablo

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 

JobID ProjectNum   JNNote 
6972  PN1    Example 3 
6973  PN2    Example 4 
6974  PN3    Example 6 
+0

Bu çok sık sorulan bir sorudur ve [tag: bigest-n-per-group] olarak etiketlenmiş çok sayıda uygun yineleme vardır, ancak yinelenen hedef olarak seçtiğim çözüm bu çözüme sahiptir ve size uygun olmalıdır. – jpw

+0

Teşekkür ederim. JNJobID'in JobID ile İşler Tablosuna bağlanmasına dayanan grup başına en büyük sonuçları bir başka sorguya nasıl katılacağına hala bir çözüm arıyorum. –

+0

Şuna bakın: http://www.sqlfiddle.com/#!6/af00e/1 – jpw

cevap

-1

Bir analitik versiyon o kullanabilirsiniz dönecekti Her bir kimlik için en son hangi satırın olduğunu tanımak için f max(). aynı tarihte aynı iş için iki notlar kesinlikle olmayacağı varsayalım gelmez

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

: Bu bir CTE veya satır içi görünümü gerektirir.

İlgili konular