-
SQL Problem
Hi,
wir haben in einer Datei mehrere Preise
ich soll nun die ersten beiden Preise vergleichen.
Aufbau
lfNr. Produkt Preis ...
manche Produkte hatten in der zwischenzeit 30 - 40 Preise, manche nur genau einen.
Ergebnis soll sein
Produkt Aktueller-Preis vorheriger-Preis Differenz
(höchste lfnr = aktuelle Preis)
hab versucht mit "with" etwas zu zaubern, bin aber anscheinend ein mieser Zauberer.
Mit RPG kein Prob. aber mit SQL?
ach ja, V5R4 ist drauf !
-
wahrscheinlich nicht die eleganteste Lösung, aber es müßte funktionieren:
PHP-Code:
select a.produkt, (select b.preis from preistabelle as b where b.produkt = a.produkt and b.lfnr in (select max(c.lfnr) from preistabelle as c where c.produkt = b.produkt)) as aktueller_preis, ifnull((select d.preis from preistabelle as d where d.produkt = a.produkt and d.lfnr in (select max(e.lfnr)-1 from preistabelle as e where e.produkt = d.produkt)), 0) as vorheriger_preis, (select f.preis from preistabelle as f where f.produkt = a.produkt and f.lfnr in (select max(g.lfnr) from preistabelle as g where g.produkt = f.produkt)) - ifnull((select h.preis from preistabelle as h where h.produkt = a.produkt and h.lfnr in (select max(i.lfnr)-1 from preistabelle as i where i.produkt = h.produkt)), 0) as differenz from produkttabelle as a
-
wahrscheinlich nicht die eleganteste Lösung, aber es müßte funktionieren:
PHP-Code:
select a.produkt, (select b.preis from preistabelle as b where b.produkt = a.produkt and b.lfnr in (select max(c.lfnr) from preistabelle as c where c.produkt = b.produkt)) as aktueller_preis, ifnull((select d.preis from preistabelle as d where d.produkt = a.produkt and d.lfnr in (select max(e.lfnr)-1 from preistabelle as e where e.produkt = d.produkt)), 0) as vorheriger_preis, (select f.preis from preistabelle as f where f.produkt = a.produkt and f.lfnr in (select max(g.lfnr) from preistabelle as g where g.produkt = f.produkt)) - ifnull((select h.preis from preistabelle as h where h.produkt = a.produkt and h.lfnr in (select max(i.lfnr)-1 from preistabelle as i where i.produkt = h.produkt)), 0) as differenz from produkttabelle as a
-
leider nicht(ganz)
Hallo woki, danke erstmal.
ich muß schon sagen...
Hut ab, wie kommt man den auf sowas ?
Aber leider ...
beim abtippen ist mir folgendes aufgefallen:
1. kann leider so nicht Funktionieren, da die lfnr Produktübergreifend ist.
Bsp.: Aktueller Preis Produkt A : lfnr 17812 vorheriger Preis Produkt A: lfnr 13213 (das hatte ich so vergessen zu erwähnen)
(@alle die gleich wieder über das Design meckern, ICH hab's nicht erfunden!)
2. wofür ist ifnull(überhaubt) und, wenn ich richtig rate, wofür der der erste ifnull ?
einen aktuellen Preis find ich doch immer, da die Basis ja die Preistabelle und nicht der Produktstamm ist.
Bitte nochmal helfen
danke
ILEMax
-
Hallo,
versuch's mal damit:
PHP-Code:
with a as (select Produkt, Min(LfdNr)
as LfdNr1
from MyTable
Group By Produkt),
b as (select x.Produkt, Min(x.LfdNr)
as LfdNr2
from MyTable x join a On a.Produkt = x.Produkt and x.lfdNr > lfdNr1
Group By x.Produkt),
a1 as (Select y.Produkt, y.lfdNr, y.Preis as Preis1 from MyTable y join a on y.Produkt = a.Produkt and lfdNr = lfdNr1),
b1 as (Select z.Produkt, z.lfdNr, z.Preis as Preis2
from MyTable z join b on z.Produkt = b.Produkt and lfdNr = LfdNr2)
select a1.Produkt, Preis1, Preis2
from a1 left outer join b1 using (Produkt)
Order By Produkt;
Birgitta
-
Hallo,
wahrscheinlich musst Du noch MIN() in MAX() umwandeln und das > Zeichen bei der Verknüpfung umdrehen.
Ich würde ja den Code nochmals editieren, aber ich kommen nicht mehr dran.
-
ja, das funzt
Sehr geehrte Frau Hauser, liebe Birgitta
das war genau das, was ich brauchte.
Supi, vielen Dank
der ILEMax
Similar Threads
-
By Stefan_Sk in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 26-05-06, 16:37
-
By Lucky4712 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-05-06, 15:57
-
By cbe in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 08-06-05, 16:21
-
By itec01 in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 16-09-04, 18:38
-
By rebe in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 07-09-01, 13:55
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