PDA

Vollständige Version anzeigen : A97 Reihenfolgenr. in Gruppe (Partition)???


christianwank
14.02.2003, 16:41
Hallo,


wie kann ich in einer Abfrage die Reihenfolgenummer eines Datensatzes in einer Gruppe ermitteln? BSP.:

1. ID_ANLAGE 2. ID_WARTUNGSARBEIT 3. WARTUNGSARBEIT_TEXT
>>1 Id_Anlage kann mehrere Id_Wartungsarbeiten haben.

>>2 Ich sortiere nach 1,2,3

Immer wenn sich die ID_ANLAGE ändert soll eine neue Gruppe angefangen werden.

In einer Gruppe soll die ID_WARTUNGSARBEIT die Reihenfolgenummer in der Gruppe erhalten.

so solls sein:

ID_ANLAGE ID_WARTUNGSARBEIT NR. WARTUNGSARBEIT
1 101 1 Text
1 102 2 Text
1 501 3 Text
1 525 4 Text
5 634 1 Text
5 645 2 Text
5 789 3 Text

Nouba
14.02.2003, 17:37
Hallo Christian,

mit einer Abfrage geht das so

<pre><font face="Courier New, Courier, monospace" size="3">SELECT<br> ID_ANLAGE<br>, ID_WARTUNGSARBEIT<br>, [NR.]<br>, WARTUNGSARBEIT<br>FROM Wartungstabelle<br>ORDER BY<br> ID_ANLAGE<br>, ID_WARTUNGSARBEIT<br>, [NR.]</font></pre>

PS: wenn in Feldnamen Sonderzeichen auftreten, muß man immer die lästigen [...] setzen. Der Tabellenname muß noch entsprechend geändert werden.

Uwe Sendatzki
14.02.2003, 19:54
Hallo,

wenn ich es richtig verstanden habe müssen die Sätze je Gruppe "just in time" nummeriert werden.

Ich meine das geht nur mit Hilfe einer Funktion die du im Query aufrufst und der du die Gruppe übergibst. Die Funktion könnte so aussehen.

Public Function Get_LFDNR(byval IDAnlage as Integer) as Integer

static LetzteID as Integer
static intLFDNR as Integer

if letzteID <> IDAnlage then
letzteID = IDAnlage
intLFDNR = 1
else
intLFDNR = intLFDNR+1
endif

Get_LFDNR = intLFDNR

End Function

Gruss Uwe

Nouba
14.02.2003, 20:10
Hallo Christian,

dank Uwes Posting habe ich nun auch herausgelesen, dass die NR zu erstellen ist. Das geht mit einer Unterabfrage.<pre><font face="Courier New, Courier, monospace" size="3">SELECT<br> W.ID_ANLAGE<br>, W.ID_WARTUNGSARBEIT<br>, W.WARTUNGSARBEIT_TEXT<br>, (SELECT<br> Count(*)<br> FROM Wartungstabelle<br> WHERE<br> ID_ANLAGE=W.ID_ANLAGE AND<br> ID_WARTUNGSARBEIT&lt;W.ID_WARTUNGSARBEIT)+1 AS NR<br>FROM Wartungstabelle AS W<br>ORDER BY<br> W.ID_ANLAGE<br>, W.ID_WARTUNGSARBEIT<br></font></pre>

christianwank
17.02.2003, 07:32
Dank an alle, ich probiere es mal aus