Neu Artikelverwaltung -> Detaillierte Kindartikelansicht mit Absatz nach Zeiträumen, Lagerreichweite, Zulauf und Retourenquote

Thomas Lisson

Administrator
Mitarbeiter
24. März 2006
15.573
280
Köln
Und in SSMS "Ungültiger Objektname "tartikel""
Das kann nicht sein - es scheint so, als hättest du die falsche Datenbank ausgewählt - ich vermute "Master" statt die Datenbank von der Wawi. Setz einfach mal das ab zum Test: SELECT * FROM tartikel
Im MSSQL Studio sollte eher der Fehler kommen, dass er @Key nicht kennt - da diese Variable von Außen (JTL-Wawi) zur Laufzeit hinzukommt.
 

knackig

Sehr aktives Mitglied
17. November 2011
917
143
Nordhessen
Im MSSQL Studio sollte eher der Fehler kommen, dass er @Key nicht kennt
Daran habe ich gedacht und stattdessen die interne ID eines Vaterartikels genommen. Habe jetzt erstmal in der Datenbank die tartikel-Tabelle rausgesucht und da über das Kontextmenü eine Select-Abfrage generiert. Da dann den Code aus dem 1. Beitrag eingefügt und jetzt kommt der Fehler "Fehler aufgrund einer Division durch Null." Leider zeigt er den Fehler in der Zeile 1, kann es also nicht eindeutig zuordnen.
 

knackig

Sehr aktives Mitglied
17. November 2011
917
143
Nordhessen
Inzwischen kann ich es etwas eingrenzen:

Wenn ich in dem ersten SELECT diese Spalte habe, bekomme ich den Fehler wegen einer Division durch Null:
SQL:
ISNULL(jRetourenGesamt.Retourenquote, '0%') AS 'Retourenquote',

Nehme ich diese Spalte raus, wird die Tabelle im SSMS und in der Wawi korrekt generiert.
 

eco

Sehr aktives Mitglied
4. März 2013
174
28
Super Ansicht! Aber lässt sich eine Zeile mit kumulierten Zeilenwerten über alle VarKombis realisieren, beispielsweise als erste Zeile? Dann hätte man auf einem Blick auch Gesamtzahlen über alle Farben und Größen.
 

T4DT.GmbH

Offizieller Servicepartner
SPBanner
6. November 2018
276
94
Hannover
[...]
Wenn ich in dem ersten SELECT diese Spalte habe, bekomme ich den Fehler wegen einer Division durch Null
[...]
Das liegt an:
SQL:
LEFT JOIN (
SELECT jabsatzgesamt.tArtikel_kArtikel,
        CONCAT((ISNULL(retourengesamt.rm, 0.0)/jabsatzgesamt.absatz)*100, '%') as Retourenquote

Ist der Jahresabsatz 0, wird durch 0 geteilt, was mathematisch nicht erlaubt ist. Die Einträge müssen entsprechend durch ein CASE WHEN gefiltert werden:
SQL:
LEFT JOIN (
SELECT jabsatzgesamt.tArtikel_kArtikel,
        CONCAT(CASE WHEN jabsatzgesamt.absatz = 0 THEN 0 ELSE (ISNULL(retourengesamt.rm, 0.0)/jabsatzgesamt.absatz)*100 END, '%') as Retourenquote
(nicht hinreichend getestet bislang)
 
  • Gefällt mir
Reaktionen: knackig

T4DT.GmbH

Offizieller Servicepartner
SPBanner
6. November 2018
276
94
Hannover
Habe es getestet und es läuft. Das war der Knackpunkt. Danke :) Jetzt müsste ich schauen, dass die Retourenquote nicht als String mit %, sondern als INT angezeigt wird, da man jetzt nicht danach sortieren kann.
Nimm den Concat raus (mit dem %-zeichen):
SQL:
LEFT JOIN (
SELECT jabsatzgesamt.tArtikel_kArtikel,
        CASE WHEN jabsatzgesamt.absatz = 0 THEN 0 ELSE (ISNULL(retourengesamt.rm, 0.0)/jabsatzgesamt.absatz)*100 END as Retourenquote

Würde ohnehin Einheiten immer in den Spaltenkopf schreiben. Nie in die Datenzeile (bspw.: Retourenquote in %)
 
  • Gefällt mir
Reaktionen: knackig

Freund_des_Hauses

Aktives Mitglied
14. Oktober 2015
20
3
Mit dieser Änderung sollte es bei allen Artikeln funktionieren.

SQL:
WHERE (kVaterArtikel <>0 AND kVaterArtikel = @Key)
OR (kVaterArtikel = 0 AND nIstVater = 0 AND tartikel.kArtikel = @Key)
OR (nIstVater = 0 AND tartikel.kArtikel = @Key)
ORDER BY cArtNr
 
  • Gefällt mir
Reaktionen: knackig