Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Gruppierungen reduzieren

Begonnen von fred-neumann, November 20, 2014, 08:44:58

⏪ vorheriges - nächstes ⏩

fred-neumann

Guten Tag,
ich laufe gegen die Wand!
Ich habe eine Abfrage mit folgenden Feldern;
ID, Nachname, Datum, Nachricht
... und diese Abfrage ist nach Nachname gruppiert.
Das Problem;
Ich möchte eine weitere Abfrage erstellen, welche die oben genannten Felder ebenfalls ausgibt, allerdings mit nur den letzten 3 Nachrichten.
Ich bekomme das echt nicht allein auf die Reihe,- kann mir jemand bitte den sql-code dafür schreiben?

ebs17

#1
Wenn ID für eindeutig steht:
SELECT
    T.*
FROM
    YourTable AS T
WHERE
    T.ID IN
        (
            SELECT TOP 3
                X.ID
            FROM
                YourTable AS X
            WHERE
                X.Nachname = T.Nachname
            ORDER BY
                X.Datum DESC,
                X.ID DESC
        )
Mit freundlichem Glück Auf!

Eberhard

fred-neumann

TREFFER ! Danke ebs17
Ich bin zuvor auf die Lösung gestoßen:
SELECT A.ID, A.Nachname, A.Nachricht, A.Datum, (SELECT
Count(*)
FROM
meineTabelle As B
WHERE
B.Nachname = A.Nachname
AND
B.Datum<=A.Datum
) AS LaufendNr, A.Nachname, Nachricht
FROM meineTabell AS A
WHERE ((((SELECT
Count(*)
FROM
meineTabellet As B
WHERE
B.Nachname = A.Nachname
AND
B.Datum<=A.Datum
))<4))
ORDER BY A.Nachname, A.Datum DESC;

welche meine einzelnen Gruppen (Nachname) nummeriert und über die laufende Nummer Datensätze sondiert. Alles ein wenig umständlich und nicht so elegant wir deine Lösung,- die ich übernommen habe.
Eberhard, danke nochmals für die Mühe!

PS: Verifizierungsfrage ungelöst; Wo lebt angeblich der Weihnachtsmann :-)