Her grup için en son girişi 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, azalan sırada gruplanacak DocumentID
ve sıralanacaktır DateCreated
. Her biri DocumentID
için en son durumu almak istiyorum.
Tercih ettiğim çıktı:
| DocumentID | Status | DateCreated |
| 1 | S1 | 8/02/2011 |
| 2 | S3 | 8/01/2011 |
| 3 | S1 | 8/02/2011 |
Her gruptan sadece en üstte yer almak için herhangi bir toplama işlevi var mı? Aşağıdaki sahte kodlara
GetOnlyTheTop
bakın:SELECT DocumentID, GetOnlyTheTop(Status), GetOnlyTheTop(DateCreated) FROM DocumentStatusLogs GROUP BY DocumentID ORDER BY DateCreated DESC
Böyle bir işlev yoksa, istediğim çıktıyı elde edebilmemin bir yolu var mı?
- Veya ilk etapta, bunun nedeni normalleştirilmemiş veritabanı olabilir mi? Bence, aradığım şey sadece bir satır olduğundan,
status
üst tabloda da yer almalı mı?
Daha fazla bilgi için lütfen üst tabloya bakın:
Geçerli Documents
Tablo
| DocumentID | Title | Content | DateCreated |
| 1 | TitleA | ... | ... |
| 2 | TitleB | ... | ... |
| 3 | TitleC | ... | ... |
Durumuna kolayca erişebilmem için üst tablo böyle olmalı mı?
| DocumentID | Title | Content | DateCreated | CurrentStatus |
| 1 | TitleA | ... | ... | s1 |
| 2 | TitleB | ... | ... | s3 |
| 3 | TitleC | ... | ... | s1 |
GÜNCELLEME Bu tür sorunları çözmeyi kolaylaştıran "uygula" nın nasıl kullanıldığını öğrendim.