2016-04-12 20 views
0

Aşağıdaki iki tablom var.SQL Server 2008 Çoklu Tablolarda Maks Değerler Üzerine Çalışma

a.id a.UpdateDate a.O a.1  b.id b.UpdateDate b.0 b.1 
    1  1/1/15  a  b   1   2/1/15 a  b 
    1  1/1/15  c  d   1   3/1/15 a  c 
    1  5/1/15  e  f   1   3/1/15 d  e 

Kimlik başına bir satır görmek istiyorum. Tablo için en son Güncelleştirme Tarihi a Tablo b için En Son Güncelleştirme Tarihi'ni tıklatın ve daha sonra Kimlik'teki bu iki tabloya katılın. Bu şekilde, her iki tablodaki en son Güncelleştirmeler, kimlik başına bir satır ile alıyorum.

a.id a.UpdateDate b.id b.UpdateDate a.o a.1 b.0 b.1 
    1  5/1/15  1   3/1/15  e  f  d  e 

Her iki tablo için maksimum değerleri ve sonraki adımlarda mücadele etmek istiyorum. DÜZENLEME - Her iki tablo için de en son UpdateDate ve id (her bir kimlik için 1 satır) gerekir, daha sonra tablo a ve b'ye kimliğe katılmak istiyorum.

Select a.id, a.UpdateDate, b.id, b.UpdateDate 
From a 
    inner join (select id, max(UpdateDate) AS dt From a group by id) 
    maxdt On A.id = maxdt.id and a.UpdateDate = maxdt.UpdateDate 

Yukarıdaki tabloda, UpdateDate ürününü tablodan ayıklayan çözümler a. Şimdi max UpdateDate'i tablo b'den nasıl çıkartacağım? Umarım bu açıktır ...

cevap

1
SELECT * 
FROM (
     SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY id ORDER BY updateDate DESC) rn 
     FROM a 
     GROUP BY 
       id 
     ) ag 
JOIN (
     SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY id ORDER BY updateDate DESC) rn 
     FROM b 
     GROUP BY 
       id 
     ) bg 
ON  bg.id = ag.id 
WHERE ag.rn = 1 
     AND bg.rn = 1 
+0

Quassnoi - Bunun işe yarayacağından emin değilim. Tablo A veya B'den bir sütun eklemek istersem, bu sütunları iç seçime ve gruba eklemeliyim, doğru mu? Bunu yapmaktan kaçınmaya çalışıyorum ve kendime kattığım ilk parçayı yukarıda ele geçirdim. Bunu da B masasında yapabilirim diye umuyordum. –

+0

@mrjohn: neden seçmek ve gruplamak için diğer sütunları eklemeniz gerekir? – Quassnoi

+0

'dan sonraki sonuç kümesinde yalnızca kimlik ve maksimum tarih vardır. Eklenmesi gereken additioanl sütunları vardır. Yaklaşık 40 sütunum var. –