-
Versuch's mal so:
Code:
select artikelnr,sum(menge) SUMME_TOT,
Sum(Case When Kennz = 'A' Then Menge Else 0 End) "Davon A",
Sum(Case When Kennz = 'B' then Menge Else 0 End) "Davon B",
Sum(Case When Kennz = 'C' then Menge Else 0 End) "Davon C"
from File
where Datum between x and y
group by artikelnr
order by SUMME_TOT desc, artikelnr
Birgitta
-
Hab's so versucht und erfolgreich gewesen. 
Danke Birgitta
-
Hallo Birgitta,
wenn ich bei diesem SQL (auf Summen-Ebene) auch noch Prozentsätze haben möchte, wie muss ich dann vorgehen?
Summe_TOT wäre die 100%-Basis und ich möchte zu den 3 durch Case bedingten Summen-Feldern (Davon A, Davon B und Davon C) die Prozentsätze bilden.
Vielen Dank im Voraus.
F.P.
-
Um den case-Ausdruck nicht komplett zu wiederholen musst du das in eine CTE oder derived Table packen:
select artikelnr , SUMME_TOT, "Davon A", ...
"Davon A" / SUMME_TOT * 100.00, ...
from (
select artikelnr,sum(menge) SUMME_TOT,
Sum(Case When Kennz = 'A' Then Menge Else 0 End) "Davon A",
Sum(Case When Kennz = 'B' then Menge Else 0 End) "Davon B",
Sum(Case When Kennz = 'C' then Menge Else 0 End) "Davon C"
from File
where Datum between x and y
group by artikelnr
)
order by SUMME_TOT desc, artikelnr
-
Versteh ich das richtig, dass er mit dieser Formel immer 100 % bekommt? ;-)
kf
-
Hi Fuerchau,
danke für die prompte Antwort.
Ich bekomme allerdings die Fehlermeldung "Schlüsselwort BY nicht erwartet", wobei es sich dabei um das BY vom "Order by" handelt.
-
select artikelnr , SUMME_TOT, "Davon A", ...
"Davon A" / SUMME_TOT * 100.00, ...
from (
select artikelnr,sum(menge) SUMME_TOT,
Sum(Case When Kennz = 'A' Then Menge Else 0 End) "Davon A",
Sum(Case When Kennz = 'B' then Menge Else 0 End) "Davon B",
Sum(Case When Kennz = 'C' then Menge Else 0 End) "Davon C"
from File
where Datum between x and y
group by artikelnr
) Tab1
order by SUMME_TOT desc, artikelnr
-
Hi,
JA, jetzt funktioniert es bestens; vielen Dank.
Franz P.
-
Wieso 100%?
Z.B.:
A / Tot * 100 = 350 / 5800 * 100.00 = 6,0344 %
-
Man muss nur die Formel umdrehen:
Summe_A * 100.00 / Summe_TO
-
Das gilt ggf. nur dann, wenn eine Integerdivision stattfand (Feld Menge ohne Nachkomma).
Wenn du nur 100 statt 100.00 genommen hättest wäre das Ergebnis nämlich auch gleich.
Mathematisch betrachtet ist das vollkommen egal.
-
Mathematisch ist es klarerweise ident; tatsächlich erhalte ich bei diesem SQL-Statement unterschiedliche Ergebnisse:
Bei Summe_a*100 / Summe_tot erhalte ich die korrekten %
Bei Summe_a/Summe_tot * 100 (egal, ob 100 oder 100.00) bekomme ich als Ergebnis entweder den Wert 100 oder den Wert 0
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 11:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 15:53
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 15:11
-
By steven_r in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 01-06-06, 13:16
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 10: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