Her grubun üst düzey 1 satır olsun
Her grup için son giriş almak istediğim bir tablo var. İşte tablo:
DocumentStatusLogs
Tablo
|ID| DocumentID | Status | DateCreated |
| 2| 1 | S1 | 7/29/2011 |
| 3| 1 | S2 | 7/30/2011 |
| 6| 1 | S1 | 8/02/2011 |
| 1| 2 | S1 | 7/28/2011 |
| 4| 2 | S2 | 7/30/2011 |
| 5| 2 | S3 | 8/01/2011 |
| 6| 3 | S1 | 8/02/2011 |
Tablo Documentıd göre gruplandırılmış ve azalan oluşturma tarihi sıralanır. Her Documentıd için, son durumu almak istiyorum.
Benim tercih çıktı:
| DocumentID | Status | DateCreated |
| 1 | S1 | 8/02/2011 |
| 2 | S3 | 8/01/2011 |
| 3 | S1 | 8/02/2011 |
Herhangi bir toplama işlevi her gruptan sadece üst de olabilir. Pseudo-code
GetOnlyTheTop
aşağıya bakın:select DocumentID, GetOnlyTheTop(Status), GetOnlyTheTop(DateCreated) from DocumentStatusLogs group by DocumentID order by DateCreated desc
Eğer böyle bir işlevi yok eğer doğru değilse, istediğim çıktıyı elde etmek için herhangi bir yolu var mı?
- Ya ilk yerde, bu normalleştirilmemiş veritabanı kaynaklanıyor olabilir mi? Aradığım şey sadece bir satır olduğu için almayı düşünüyorum,
status
da ana tabloda bulunması gerekir?
Lütfen daha fazla bilgi için ana tabloya bakın:
Güncel Documents
Tablo
| DocumentID | Title | Content | DateCreated |
| 1 | TitleA | ... | ... |
| 2 | TitleB | ... | ... |
| 3 | TitleC | ... | ... |
Ana tablonun durumunu kolayca erişebilirsiniz, böylece bu gibi olmalıdır?
| DocumentID | Title | Content | DateCreated | CurrentStatus |
| 1 | TitleA | ... | ... | s1 |
| 2 | TitleB | ... | ... | s3 |
| 3 | TitleC | ... | ... | s1 |
GÜNCELLEME Ben kullanmayı öğreniyor "Uygula" hangisi daha kolay, bu tür sorunları çözmek için yapar.
CEVAP
;WITH cte AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY DocumentID ORDER BY DateCreated DESC) AS rn
FROM DocumentStatusLogs
)
SELECT *
FROM cte
WHERE rn = 1
Eğer günde 2 girişleri düşünüyorsanız, o zaman bu keyfi bir seçim olacaktır. Bir gün için her iki girdileri almak için, DENSE_RANK kullanın
Değiştirilmiş ya da değil, eğer istersen bağlıdır
- 2 yerde durumu korumak
- durumu geçmişi korumak
- ...
Bu haliyle, durumu geçmişi korumak. Son denormalisation) "" üst. durumu korumak için bir tetikleyici lazım üst tabloda da durum isterseniz ya da bu durumu geçmişi tablo açılır.
Çok büyük bir metin dosyası son 10 sat...
Nasıl JavaScript ifadesi bir satır yaz...
Sh nasıl bir dize bir satır alabilir m...
@Media kuralları satır içi CSS koymak ...
İOS7 şeffaf gezinti çubuğu doğru renk ...