Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hallo,
folgendes Problem. Aus einer Datenquelle erhalte ich für einen Artikel 2 Preise. Einer davon ist falsch und soll nicht weiter mit geladen werden.
Das ist meine Tabelle:
Material:
left keep (Temp_Best)
LOAD
MaterialNR as M_MaterialNR,
.....
Preis as M_Preis,
..........
FROM
SAP\C_MD_Material_EK.qvd
(qvd)
where len(Materialname) > 1
and len(Material) >1
and len(MaterialNR)>1
;
Der Preis 29,09 Euro (Feld: Preis) soll bei der Artikelnummer 123476 (Feld: MaterialNR) ausgeschlossen werden. Wie müsste ich die where Bedingung schreiben?
VIele Grüße
So geht's:
Tabelle1:
LOAD * INLINE [
ArtikelNummer, Preis
1, 10
1, 5
2, 20
]
where not (ArtikelNummer = 1 and Preis = 5);
Beide Bedingungen müssen gleichzeitig erfüllt sein, daher das Einklammern und der Match soll auf numerische Werte gehen und daher keine Anführungszeichen - dies sind für String-Vergleiche.
- Marcus
Sofern es sich nicht um einen absoluten Einzelfall handelt (sehr unwahrscheinlich) benötigst Du eine Logik, mit der richtig/falsch unterschieden werden kann (neuer/älter, größer/kleiner, ...). Sofern dass nicht eindeutig möglich ist, würde ich eher beide Preis-Felder einladen und mit einem Flag-Feld oder einem dritten Preis-Feld die angenomme "Preis-Wahrheit" zeigen. Nur damit werden Fehler in der Prozesskette offenbar und man kann in die Interpretation und abgeleiteten Handlungen gewisse "Unschärfen" einkalkulieren. Derartige Fehler sollte man eher zeigen und dokumentieren als bereinigen und/oder wegblenden.
Schöne Grüße
Marcus
Aber wie würde denn in diesem Fall die where Bedingung aussehen?
Ungefähr so:
....
and not (MaterialNR = 23476 and Preis = 29,09)
....
Wobei so manuelles Eingreifen wirkt nur im Einzelfall (bei mehreren Fällen wird dies schnell unübersichtlich und inperformant) und ist auch nicht transparent und wird später schnell "vergessen" (in jeder Hinsicht).
- Marcus
Ich bekomm das irgendwie nicht hin. Könntest du mir hier helfen?
So geht's:
Tabelle1:
LOAD * INLINE [
ArtikelNummer, Preis
1, 10
1, 5
2, 20
]
where not (ArtikelNummer = 1 and Preis = 5);
Beide Bedingungen müssen gleichzeitig erfüllt sein, daher das Einklammern und der Match soll auf numerische Werte gehen und daher keine Anführungszeichen - dies sind für String-Vergleiche.
- Marcus
Warum geht das hierbei nicht?
FROM
SAP\....qvd
(qvd)
where len(MN) > 1
and len(M) >1
and len(MNR)>1
and not (MaterialNR = 12and Preis = 2)
;
Zwischen 12 und and ist kein Leerezeichen, daher wird es nicht richtig erkannt.
- Marcus
Sorry Schreibfehler von mir.
FROM
SAP\....qvd
(qvd)
where len(MN) > 1
and len(M) >1
and len(MNR)>1
and not (MaterialNR = 12 and Preis = 2)
Es geht aber trotzdem nicht. Auch mit ... "12" and Preis = "2"
Probier mal die 12 mit single-qoutes '12' vielleicht ist ja doch ein String.