Berechnung innerhalb der SQL Abfrage

To-Di

Benutzer
Beiträge
5
Hallo,
ich müsste innerhalb meiner Abfrage:

Select
PCH1.ShipDate,
PCH1.BaseRef,
OITM.ItemCode,
OITM.ItemName,
PCH1.Price,
PCH1.Currency,
PCH1.Rate,
OITM.CardCode,
OCRD.CardName
From
OITM Inner Join
PCH1 On OITM.ItemCode = PCH1.ItemCode Inner Join
OCRD On OITM.CardCode = OCRD.CardCode
Where
OITM.CardCode = '70749'
Order By
OITM.ItemCode,
PCH1.BaseRef

den Wert aus PCH1.Price * PCH1.Rate errechnen.
Mein Ansatz war:

Select
PCH1.Price,
PCH1.Rate,
Price*Rate AE Euro

Bin absoluter SQL Neuling, also bitte nicht lachen...
 
Werbung:
Du warst schon auf der richtigen Spur...
Wenn es einen Fehler gab, dann weil es die Spalten in mehreren deiner Tabellen/Views gab.
Also immer richtig referenzieren... :)
Code:
Select t2.shipdate,
       t2.baseref,
       t1.itemcode,
       t1.itemname,
       t2.currency,
       t1.cardcode,
       t3.cardname
       t2.price as price_currency,
       t2.rate as currency_rate,
       round(t2.price * t2.rate, 6) as price
From   oitm t1

Inner  Join pch1 t2
On     t1.itemcode = t2.itemcode

Inner  Join ocrd t3
On     t1.cardcode = t3.cardcode

Where  t1.cardcode = '70749'

Order  By t1.itemcode,
          t2.baseref
 
Hi Distrilec,
danke für die schnelle Antwort! :)
Ich bekomme allerdings in Zeile 8, Pos. 10:
t2.price as price_currency,
den Fehler "invalid sevelct statement"...:(
 
Fantastisch, jetzt gehts :)
Allerdings hätte ich dividieren, nicht multiplizieren müssen. Habe also "*" gengen "/" ausgetauscht.
Einige Felder haben keinen, oder einen "0" Wert, so bekomme ich jetzt den Fehler "Divide by zero..."
Bei Excel wüsste ich damit umzugehen ;)
 
Das dein Währungskurs eine 0 enthalten kann finde ich schon ziemlich fragwürdig...

Aber da kann ich dir auch nur eine Lösung geben, wenn du mir sagst was bei NULL-Werten oder 0-Werten angezeigt werden soll :)
Möchtest du dann einfach nur den Preise sehen? Oder nichts?
 
Danke Dir für Deine Hilfe!
Der Währungskurs hatt immer dann einen o Wert, wenn es sich bereits um Euro handelt.
In diesem Fall soll der Wert aus dem Feld Price übernommen werden. Ich gebe Dir natürlich Recht, dass SAP hier besser eine 1 als eine 0 reinschreiben sollte!

Zusätzlich gibt es aber tatsächlich auch o Werte bei den Preisen - z.B. bei unberechneten Mustern etc.
Es kann aber trotzdem einen Währungskurs geben (aus anderen Positionen des Belegs)
Wenn das der Fall ist, soll 0 erscheinen (aber das dürfte nicht das Problemsein - oder?)
 
Zusätzlich gibt es aber tatsächlich auch o Werte bei den Preisen - z.B. bei unberechneten Mustern etc.
Es kann aber trotzdem einen Währungskurs geben (aus anderen Positionen des Belegs)
Wenn das der Fall ist, soll 0 erscheinen (aber das dürfte nicht das Problemsein - oder?)

Also zum Verständnis...
Wenn der Preis 0 ist, soll dort 0 erscheinen? -> Passiert schon... 0 / 20434232 ist auch 0 :)
Aber was soll passieren wenn es andere Positionen mit einem Währungskurs gibt?
Den zu Filtern könnte problematisch werden...
1. Was wenn es verschiedene gibt
2. Was wenn der Währungskurs einen anderen Zeitstempel hat? (Die Position ist neuer als die, die wir eigentlich umrechnen wollen / Ergo hat sich auch der Währungskurs in der Zeit geändert)
(Was mir so on-the-fly dazu einfällt :) )

Hier aber schonmal die Änderung für den Währungskurs
Code:
Select t2.shipdate,
       t2.baseref,
       t1.itemcode,
       t1.itemname,
       t2.currency,
       t1.cardcode,
       t3.cardname,
       t2.price As price_currency,
       t2.rate As currency_rate,
       Case
          When t2.rate Is Null Or
               t2.rate = 0 Then
           t2.price
          Else
           round(t2.price / t2.rate, 6)
       End As price
From   oitm t1

Inner  Join pch1 t2
On     t1.itemcode = t2.itemcode

Inner  Join ocrd t3
On     t1.cardcode = t3.cardcode

Where  t1.cardcode = '70749'

Order  By t1.itemcode,
          t2.baseref
 
Werbung:
super , vielen Dank!
Mit winzigen Änderungen - die ich tatsächlich selber machen konnte ;-) - hab ich jetzt ganau das, was ich brauche - vielen Dank!
sorry, hinsichtlich der Währungskurse und anderen Positionen hatte ich mich nicht klar ausgedrückt (der Sachverhalt ist allerdings auch nicht ganz einfach zu erklären)
Nochmals vielen Dank für Deine Hilfe!!!;)
 
Zurück
Oben