Ein Datensatz pro Monat

luchs3

Erfahrenes Mitglied
Hi,

Ich möchte mit folgender Abfrage Daten auslesen.
Soweit funktioniert das auch, aber es gibt manchmal mehrere Datensätze in einem Monat.
Deshalb würde ich die auch gerne zusammenfassen und bei betrag und Menge aufsummieren.
Leider bekomme ich das nicht wirklich hin.
Ist das überhaupt möglich?

Code:
 SELECT ILP_ARTNR, ILP_NAME, ILK_LADNR, YEAR( ILK_BDATUM ) AS ILK_JAHR, MONTH( ILK_BDATUM ) AS ILK_MONAT, SUM( ILP_BETRAG ) AS VKPREIS, SUM( ILP_MENGE ) AS ILK_MENGE
FROM idatlifp
INNER JOIN idatlifk ON ILK_BNUM = ILP_BNUM
WHERE ILK_KUNR =820201
AND ILP_VTNR =3
AND ILP_ARTNR
IN (
'TO RF-GA35223M'
)
GROUP BY ILP_ARTNR, ILP_NAME, ILP_TEXT1, ILK_LADNR, ILK_MONAT, ILK_JAHR
ORDER BY ILK_LADNR, ILP_ARTNR, ILK_MONAT, ILK_JAHR ASC

Danke im vorraus
Niko
 
Hi,

das müsstest Du schon genauer beschreiben, da man die Semantik an der reinen Abfrage nicht erkennen kann. Warum gruppierst Du nach so vielen Feldern, ist das wirklich nötig? Eine ILP_ARTNR (Artikelnummer?) z.B. kann mehrere Einträge mit verschiedenen Namen haben?

Was ergibt denn die gepostete Abfrage? Und was wolltest Du haben? Wie sieht das Ganze ohne Gruppierung aus, damit man sich mal ein Bild von den Daten machen kann?

LG
 
Stimmt, ILP_NAME und ILP_TEXT1 sind unnötig gruppiert.

Ich habe eine Auftragstabelle (ILK_*) und eine Artikel im Auftrag- Tabelle(ILP_*)

Ich will für jedes Monat eine Zeile mit Umsatz und Menge.
Sortiert nach Lieferadresse, Artikel, Datum (in dieser Reihenfolge).
Jetzt ist die Frage, ob das, ohne das Datumsfeld aufzuspalten möglich ist.

Btw: DB ist MySQL
 
Hi,

und wie sieht das bisherige Ergebnis jetzt aus?

kuddeldaddeldu hat gesagt.:
Was ergibt denn die gepostete Abfrage? Und was wolltest Du haben? Wie sieht das Ganze ohne Gruppierung aus, damit man sich mal ein Bild von den Daten machen kann?

Warum willst Du das Datumsfeld nicht aufspalten? Irgendwie musst Du doch Monat und Jahr da rauspulen.

LG
 
nein nein, das meine ich nicht.
Derzeit habe ich in alles schön sortiert, aber eben mehrere Datensätzte pro Monat.
Er gruppiert mir die Monate nicht.
Ich habe gemeint, ob ich das Datumsfeld in der db ganz lassen kann, oder ob ich eine Spalte für Jahr und eine für Monat anlegen müsste.

Edit:
Ohne Gruppierung habe ich jeden Auftrag extra gelistet (Artikel, Lieferadresse, Betrag,...).
ich will aber für jedes Monat eine Zeile pro Auftrag und Lieferadresse haben (Betrag und Menge summiert).
 
Zuletzt bearbeitet:
Hi,

Derzeit habe ich in alles schön sortiert, aber eben mehrere Datensätzte pro Monat.
Er gruppiert mir die Monate nicht.

Dann wirst Du jetzt endlich mal Daten rausrücken müssen. An der Abfrage kann ich nichts erkennen. Und poste die aktuelle Abfrage dazu. Ideal wäre ein Testdump, an dem man das mal ausprobieren kann.

Ich habe gemeint, ob ich das Datumsfeld in der db ganz lassen kann, oder ob ich eine Spalte für Jahr und eine für Monat anlegen müsste.

Das Datumsfeld kannst Du so lassen, die Datums- und Zeitfunktionen hast Du ja schon gefunden.

LG
 
ok, also mit:
Code:
    SELECT ILP_ARTNR, ILK_LADNR, YEAR( ILK_BDATUM )  AS ILK_JAHR, MONTH( ILK_BDATUM )  AS ILK_MONAT, SUM( ILP_BETRAG )  AS VKPREIS, SUM( ILP_MENGE )  AS ILK_MENGE
FROM idatlifp
INNER  JOIN idatlifk ON ILK_BNUM = ILP_BNUM
WHERE ILK_KUNR =820201
AND ILP_VTNR =3
AND ILP_ARTNR
IN ( 'TO RF-GA35223M'
)
GROUP  BY ILP_ARTNR, ILK_LADNR, MONTH( ILK_BDATUM ) 
ORDER  BY ILK_LADNR, ILP_ARTNR, ILK_BDATUM ASC
bekomme ich das
TO RF-GA35223M 820202 2004 1 1234.6 60
TO RF-GA35223M 820202 2004 3 132.55 55
TO RF-GA35223M 820202 2004 6 224.25 25
TO RF-GA35223M 820202 2004 8 1234.5 50
TO RF-GA35223M 820202 2004 10 1234.45 45
TO RF-GA35223M 820202 2005 2 1234.3 30
TO RF-GA35223M 820202 2005 5 1234.4 40
TO RF-GA35223M 820202 2005 7 1234.5 50
TO RF-GA35223M 820202 2005 9 1234.55 55
TO RF-GA35223M 820202 2005 11 1234.55 55
mit
Code:
SELECT ILP_ARTNR, ILK_LADNR, YEAR( ILK_BDATUM )  AS ILK_JAHR, MONTH( ILK_BDATUM )  AS ILK_MONAT, SUM( ILP_BETRAG )  AS VKPREIS, SUM( ILP_MENGE )  AS ILK_MENGE
FROM idatlifp
INNER  JOIN idatlifk ON ILK_BNUM = ILP_BNUM
WHERE ILK_KUNR =820201
AND ILP_VTNR =3
AND ILP_ARTNR
IN ( 'TO RF-GA35223M'
)
GROUP  BY ILP_ARTNR, ILK_LADNR, ILK_BDATUM
ORDER  BY ILK_LADNR, ILP_ARTNR, ILK_BDATUM ASC
das
TO RF-GA35223M 820202 2004 1 1234.1 10
TO RF-GA35223M 820202 2004 3 1234.1 10
TO RF-GA35223M 820202 2004 3 1234.05 5
TO RF-GA35223M 820202 2004 6 1234.1 10
TO RF-GA35223M 820202 2004 8 1234.1 10
TO RF-GA35223M 820202 2004 10 1234.05 5
TO RF-GA35223M 820202 2004 10 1234.15 15
TO RF-GA35223M 820202 2005 1 1234.05 5
TO RF-GA35223M 820202 2005 2 1234.05 5
TO RF-GA35223M 820202 2005 3 1234.1 10
TO RF-GA35223M 820202 2005 5 1234.1 10
TO RF-GA35223M 820202 2005 5 1234.05 5
TO RF-GA35223M 820202 2005 7 1234.1 10
TO RF-GA35223M 820202 2005 7 1234.05 5
TO RF-GA35223M 820202 2005 9 1234.1 10
TO RF-GA35223M 820202 2005 11 1234.1 10
TO RF-GA35223M 820202 2005 11 123405 5
Ich habe das jetzt einmal auf das minimum reduziert.
Die Betragwerte sind natürlich nicht die echten, aber bei der ersten Abfrage sind die volkommen fallsch gerechnet.
 
Ok, hab den Fehler schon gefunden.
In der Abfrage der ersten Abfrage habe ich ILP_TEXT1 noch mit gruppiert.
Da die Texte manchmal variieren hat er mir mehrere Zeilen pro Monat ausgegeben.

Danke für die schnelle Hilfe
 
Zurück