Anmelden

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

BenderD
27-08-10, 09:00
... 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

BenderD
27-08-10, 09:39
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

Fuerchau
27-08-10, 09:55
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.

BenderD
27-08-10, 10:06
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