Access tabelle nach mehreren Kriterien sortieren
Klingt einfach ist es aber nicht... Die Tabelle/ Abfrage soll nämlich besonders sortiert werden.
Zur Erklärung:
Ich möchte Wissen, ob es eine Möglichkeit gibt, dass eine Tabelle/Abfrage so ´sortiert wird, dass zB in Spalte1 erst nach der Größten Zahl gesucht wird.
Nanach soll nach Spalte2 sortiert werden, unabhängig ob in Spalte1 noch größere Zahlen vorhanden sind. Danach wie nächste Große noch unsortierte Zahl.
ich hoffe es ist verständlich
400 | ABC | 1
350 | ABC | 2
270 | ABC | 3
330 | DEF | 1
320 | DEF | 2
45 | DEF | 3
217 | GHI | 1
12 | GHI | 2
Zur Erklärung:
Ich möchte Wissen, ob es eine Möglichkeit gibt, dass eine Tabelle/Abfrage so ´sortiert wird, dass zB in Spalte1 erst nach der Größten Zahl gesucht wird.
Nanach soll nach Spalte2 sortiert werden, unabhängig ob in Spalte1 noch größere Zahlen vorhanden sind. Danach wie nächste Große noch unsortierte Zahl.
ich hoffe es ist verständlich
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 151613
Url: https://administrator.de/contentid/151613
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
6 Kommentare
Neuester Kommentar
Moin ShitzOvran,
so, wie du das erwünschte Ergebnis darstellst , ist die gewünsche Sortierung doch nicht "Spalte1, dann Spalte2, dann Spalte3".
Sondern "Spalte2, dann Spalte1, dann Spalte3".
Dann mach das doch einfach mit " SELECT ....ORDER BY 2, 1, 3"
[Edit]
Bzw., da die erste Spalte ja absteigend sortiert werden soll mit
" SELECT ....ORDER BY Spalte2, Spalte1 DESC, Spalte3 " order dem kürzeren " SELECT ....ORDER BY 2, 1 desc, 3"
[/Edit]
Grüße
Biber
so, wie du das erwünschte Ergebnis darstellst , ist die gewünsche Sortierung doch nicht "Spalte1, dann Spalte2, dann Spalte3".
Sondern "Spalte2, dann Spalte1, dann Spalte3".
Dann mach das doch einfach mit " SELECT ....ORDER BY 2, 1, 3"
[Edit]
Bzw., da die erste Spalte ja absteigend sortiert werden soll mit
" SELECT ....ORDER BY Spalte2, Spalte1 DESC, Spalte3 " order dem kürzeren " SELECT ....ORDER BY 2, 1 desc, 3"
[/Edit]
Grüße
Biber
Moin ShitzOvran,
versuch es so
Anmerkungen
--> diese Informationen hätten auch von dir kommen können.
Ergebnis bei etwas angepassten Spieldaten aus deinem Eröffnungspost:
deine Spieldaten wären "immer" richtig sortiert und es gibt keine "doppelten" Top-Tageszähler - so kann niemand nichts testen
Grüße
Biber
[Edit] In der 2.Query-Zeile ..SELECT days, kunde, VU, days*10000 as dummy... das unnötige Feld "VU" entfernt [/Edit]
versuch es so
SELECT b.* FROM VUs b,
(SELECT days, kunde, days*10000 as dummy
FROM VUs
WHERE days & kunde IN (SELECT max(days) & kunde FROM Vus GROUP BY Kunde) ) a
WHERE b.Kunde = a.kunde
ORDER BY a.dummy desc, b.kunde, b.days desc
Anmerkungen
- ich habe die Tabelle, die ich insgesamt 3x selektiere "VUs" genannt.
- Die drei Felder heissen bei mir "days" (=dein Tageszähler; Zahl) , "Kunde" (Zeichenfeld) und "VU" (Zahl oder Text... egal)
- Identifizierende Schlüssel in der Tabelle VUs sind "Kunde, VU"
--> diese Informationen hätten auch von dir kommen können.
Ergebnis bei etwas angepassten Spieldaten aus deinem Eröffnungspost:
deine Spieldaten wären "immer" richtig sortiert und es gibt keine "doppelten" Top-Tageszähler - so kann niemand nichts testen
## Testdaten mit PK "Kunde, VU" ausgegeben
Days Kunde VU
22 AAA 21
111 AAA 2345
400 ABC 111
350 ABC 222
270 ABC 333
45 DEF 3
330 DEF 221
320 DEF 933
217 GHI 1616
12 GHI 3636
111 ZZZ 1234
###
Ergebnis bzw. Sortierung mit der oben geposteten Abfrage
Days Kunde VU
400 ABC 111
350 ABC 222
270 ABC 333
330 DEF 221
320 DEF 933
45 DEF 3
217 GHI 1616
12 GHI 3636
111 AAA 2345
22 AAA 21
111 ZZZ 1234
Grüße
Biber
[Edit] In der 2.Query-Zeile ..SELECT days, kunde, VU, days*10000 as dummy... das unnötige Feld "VU" entfernt [/Edit]