View Full Version : Rechnen im SQL
KingofKning
27-08-10, 08:49
Hallo *all,
da ich nicht der SQl Guru bin hier meine Frage:
Ich habe 2 Dateien, in einer steht ein Wert, und in der 2 steht ob der Wert positiv oder negativ ist. Ich möchte jetzt gerne in SQL aus den 2 Dateien eine machen und direkt den Wert sauber setzen.
Vorher Vorher
Art
1234 Zugang 1000 Zugang +
1234 Abgang 500 Abgang -
BSP
Art Bewegungsart Menge
1234 Zugang 1000
1234 Abgang -500
Das Problem ist das + bei mehreren Zuständen auftreten kann z.B. auch bei Rücknahme etc. und Abgang kann ja auch Schwund sein. Ich müßte dieses + oder - also bei einem Treffer aus eine Liste machen.
Kann mir da jemand Denkanstöße geben?
GG
... case ist einer deiner Freunde, es könnte aber auch einfacher sein sich eine Hilfstabelle zu machen (ich hasse case, da vertippe ich mich immer) und sich von dort dann eine +1 oder -1 zu holen und damit zu multiplizieren.
D*B
Hallo *all,
da ich nicht der SQl Guru bin hier meine Frage:
Ich habe 2 Dateien, in einer steht ein Wert, und in der 2 steht ob der Wert positiv oder negativ ist. Ich möchte jetzt gerne in SQL aus den 2 Dateien eine machen und direkt den Wert sauber setzen.
Vorher Vorher
Art
1234 Zugang 1000 Zugang +
1234 Abgang 500 Abgang -
BSP
Art Bewegungsart Menge
1234 Zugang 1000
1234 Abgang -500
Das Problem ist das + bei mehreren Zuständen auftreten kann z.B. auch bei Rücknahme etc. und Abgang kann ja auch Schwund sein. Ich müßte dieses + oder - also bei einem Treffer aus eine Liste machen.
Kann mir da jemand Denkanstöße geben?
GG
KingofKning
27-08-10, 09:25
Tja,
wie meistens eine Frage der Syntax.
Probiert habe ich das hier
create view gregor/test03 as
select bwtenr, teknam, bwbdn2, bwlgnr, bwanr,
case bwvgar = 150 then -bwbmen else bwbmen end case as bwbmen
Aber mögen tut er es nicht.
Wie müßte es denn richtig lauten?
GG
select
case when charnn = 'Hugo' then 'Otto' else 'Fritz' end as denkste
from dsternb1.testtyp
Tja,
wie meistens eine Frage der Syntax.
Probiert habe ich das hier
create view gregor/test03 as
select bwtenr, teknam, bwbdn2, bwlgnr, bwanr,
case bwvgar = 150 then -bwbmen else bwbmen end case as bwbmen
Aber mögen tut er es nicht.
Wie müßte es denn richtig lauten?
GG
KingofKning
27-08-10, 09:45
Tja der stört sich an dem = Zeichen.
Token = ungültig. Gültige Token: + -.
GG
Es gibt 2 Varianten:
case Ausdruck
when const1 then Ausdruck1
[when const2 then Ausdruck2]
[else Ausdruck3]
end [as] NewName
case
when Ausdruck1 then Ausdruck1
[when Ausdruck2 then Ausdruck2]
[else Ausdruck3]
end [as] NewName
Ausdruck kann jede beliebige Formel sein, die einen Wert ergibt
Für deine Fall also
case Feld
when 150 then ...
else ...
end
Wichtig zu wissen ist, wenn kein Else vorhanden ist und keine Bedingung wahr ist wird NULL zurückgegeben.
Brille putzen hilft zuweilen!
select
case when charnn = 'Hugo' then 'Otto' else 'Fritz' end as denkste
from dsternb1.testtyp
oder
select
case charnn when 'Hugo' then 'Otto' else 'Fritz' end as denkste
from dsternb1.testtyp
man beachte wo das "when" steht!!!!!
Tja der stört sich an dem = Zeichen.
Token = ungültig. Gültige Token: + -.
GG
KingofKning
27-08-10, 11:08
Danke,
woher wußtest Du das ich Brillenträger bin ;-)
GG
AS400.lehrling
27-08-10, 11:15
Das läuft wohl unter Persönliche Erfahrungen :p
Gruß AS400.lehrling
PS: Trage auch eine Brille