-
Sortieren mit SQL
Hallo Forum
Die folgende Subfile soll in SQLRPGLE nach Betrag aufsteigen oder absteigend sortiert werden.
Dabei ist die jeweils niedrigste "Stufe2" aller Sätze massgebend. Die Sortierung soll aber auch
innerhalb der gleichen "Stufe1" wirken.
Dazu gebe ich eine Tabelle mit gleichem Aufbau aus die nach dem sortieren wieder eingelesen und angezeigt wird.
PHP-Code:
Stufe1 Stufe2 Krit BETRAG
1 4 ||||Artikel 55 2,81
1 4 ||||Artikel 56 85,00
1 4 ||||Artikel 57 41,94
1 4 ||||Artikel 58 41,38
1 3 |||Auftragsart 50 171,13
1 2 ||Monat 01 171,13
1 1 |Kunde 1100 171,13
2 4 ||||Artikel 40 20,08
2 4 ||||Artikel 41 100,42
2 4 ||||Artikel 56 59,46
2 3 |||Auftragsart 01 179,96
2 2 ||Monat 01 179,96
2 1 |Kunde 1101 179,96
nach der Sortierung soll das so aussehen
Stufe1 Stufe2 Krit BETRAG
2 4 ||||Artikel 41 100,42
2 4 ||||Artikel 56 59,46
2 4 ||||Artikel 40 20,08
2 3 |||Auftragsart 01 179,96
2 2 ||Monat 01 179,96
2 1 |Kunde 1101 179,96
1 4 ||||Artikel 56 85,00
1 4 ||||Artikel 57 41,94
1 4 ||||Artikel 58 41,38
1 4 ||||Artikel 55 2,81
1 3 |||Auftragsart 50 171,13
1 2 ||Monat 01 171,13
1 1 |Kunde 1100 171,13
Wie bekomme ich das mit einer dynamischen sqL-Anweisung hin?
Gruß Joe[/FONT]
-
Meinst du vielleicht:
1. Sortierung
PHP-Code:
Select FeldA, FeldB, FeldC, ... From TabelleA Where ... Order by 1 asc, 2 desc
2. Sortierung
PHP-Code:
Select FeldA, FeldB, FeldC, ... From TabelleA Where ... Order by 1 desc, 2 desc
1. Du erstellst das SQL-Select-Statement als String.
MySQLStm = 'SELECT ..... '
2. Du generierst ein ausführbares SQL-Statement über den SQL Prepare-Befehl:
/EXEC SQL Prepare MySQLCmd from :MySQLStm
/END-EXEC
3. Du deklarierst einen Cursor, in dem Du statt des SQL-Statements den aufbereiteten SQL-Command angibst:
/EXEC SQL Declare MyCursor For MySQLCMD
/END-EXEC
-
Das Problem hier ist eher die 2-stufige Sortierung.
Hierfür musst du ein temporäres Zwischenergebnis erstellen, dass du dann für die Sortierung wieder verknüpfst:
with
xGroupSum as (
select kunde, sum(Umsatz) as GUmsatz
from MyFile
group by Kunde)
select a.Kunde, Artikel, min(GUmsatz) as GUmsatz, sum(Umsatz) as AUmsatz A
from myfile inner join xGroupSum B on a.Kunde=B.Kunde
group by Kunde, Artikel
order by GUmsatz, AUmsatz, Kunde
Je nach Schachtelungstiefe benötigst du entsprechend viele Zwischenergebnisse und Verknüpfungen.
Performance ?
Naja, das muss man ausprobieren.
-
Zitat von Fuerchau
Das Problem hier ist eher die 2-stufige Sortierung.
Hierfür musst du ein temporäres Zwischenergebnis erstellen, dass du dann für die Sortierung wieder verknüpfst:
with
xGroupSum as (
select kunde, sum(Umsatz) as GUmsatz
from MyFile
group by Kunde)
select a.Kunde, Artikel, min(GUmsatz) as GUmsatz, sum(Umsatz) as AUmsatz A
from myfile inner join xGroupSum B on a.Kunde=B.Kunde
group by Kunde, Artikel
order by GUmsatz, AUmsatz, Kunde
Je nach Schachtelungstiefe benötigst du entsprechend viele Zwischenergebnisse und Verknüpfungen.
Performance ?
Naja, das muss man ausprobieren.
Vielen Dank für den Lösungsansatz.
Da die Schachtelungstiefe > 30 sein kann, habe ich mich für
eine "abgespeckte" Version entschieden bei der der Benutzer die Sortierstufe vorgibt. Nur diese wird dann verwendet und angezeigt.
Gruß Joe
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 11:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks