Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Sainfeld am März 04, 2013, 23:50:27

Titel: Gruppennummerierung mit Abfrage
Beitrag von: Sainfeld am März 04, 2013, 23:50:27
Hallo,

Ich habe folgendes Problem:

Ich habe eine Liste:

ID | Name |Version|

1   |  Bernd|   1      |
2   |  Klaus |   2      |
3   |  Klaus |   2      |
4   |  Klaus |   4      |
5   |  Klaus |   4      |
6   |  Klaus |   4      |
7   |  Bernd|   2      |
8   |  Bernd|   2      |
9   |  Heinz|   1      |
10 |  Klaus|   3      |
11 |  Klaus|   3      |


Nun möchte ich die Spalten [Name] und [Version] in der Reihenfolge der [ID] per Abfrage nummerieren:


ID | Name |Version|Num]

1   |  Bernd|   1      |   1   |
2   |  Klaus |   2      |   2   |
3   |  Klaus |   2      |   2   |
4   |  Klaus |   4      |   3   |
5   |  Klaus |   4      |   3   |
6   |  Klaus |   4      |   3   |
7   |  Bernd|   2      |   4   |
8   |  Bernd|   2      |   4   |
9   |  Heinz|   1      |    5  |
10 |  Klaus|   3      |    6   |
11 |  Klaus|   3      |    6   |


Kann mir da bitte jemand helfen, ich krieg es nicht hin.   :-\


Beste Grüße

Bernd
Titel: Re: Gruppennummerierung mit Abfrage
Beitrag von: ebs17 am März 05, 2013, 00:29:31
Man kann es sich auch schwer machen mit einer etwas verqueren Aufgabenstellung, und bei ein paar mehr Daten solltest Du keine Wunderdinge von der Performance erwarten:
SELECT
    T.ID,
    T.Name,
    T.Version,
    Q.Num
FROM
    tblP AS T
        INNER JOIN
            (
                SELECT
                    A.Name,
                    A.Version,
                    (
                        SELECT
                            Count(*)
                        FROM
                            (
                                SELECT
                                    Min(ID) AS MinID,
                                    Name,
                                    Version
                                FROM
                                    tblP
                                GROUP BY
                                    Name,
                                    Version
                            ) AS B
WHERE
    B.MinID < A.MinID) + 1 AS Num
FROM
    (
        SELECT
            Min(ID) AS MinID,
            Name,
            Version
        FROM
            tblP
        GROUP BY
            Name,
            Version
    ) AS A) AS Q
    ON
        (T.Version = Q.Version)
            AND
        (T.Name = Q.Name)


MfGA
ebs
Titel: Re: Gruppennummerierung mit Abfrage
Beitrag von: Sainfeld am März 10, 2013, 00:09:41
Super, vielen Dank.