AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Syntaxanfrage

Ein Thema von p80286 · begonnen am 15. Aug 2016 · letzter Beitrag vom 15. Aug 2016
 
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Syntaxanfrage

  Alt 15. Aug 2016, 12:58
Wenn ich die Aufgabenstellung richtig verstehe, geht es doch darum, mehrere nacheinander ermittelte Werte aus einer Tabelle im Ergebnis nebeneinander darzustellen.

Insgesamt erscheint mir das Statement sehr komplex, so dass ich nicht nachvollziehen kann, warum das so und nicht anders gelöst wurde.

Als erstes würd' ich mal diese beiden Zeilen wegwerfen, sie sind überflüssig:
SQL-Code:
select 0 a_c, 0 k_c,0 w_c,0 misc_c from dual ------- einmal Basisdaten bitte
union
Durch das Max() gehen die Werte verloren, es sei denn, im "Rest" kämen nur negative Werte vor, dann blieben die Nullen als Maximalwerte übrig.
Es könnte eventuell auch sein, dass das erforderlich ist, sofern der "Rest" eine leere Ergebnismenge liefert.
Wäre das im Rahmen des Möglichen?
(Edit: Aber das müsste das NVL doch eigentlich verhindern? Oder?)

Den Teil, in dem die Maximalwerte ermittelt werden, würd' ich so schreiben:
SQL-Code:
select max(a_c) DEM_SummeA
      ,max(k_c) DEM_SummeK
      ,max(w_c) DEM_SummeW
      ,max(misc_c) DEM_Summe_
      ,max(a_c)+max(k_c)+max(w_c)+max(misc_c) DEM_Summe
from
(
  select nvl(cnt,0) a_c, 0 w_c, 0 k_c, 0 Misc_c from bucnt where bu='A'
  union all
  select 0 a_c, 0 w_c, nvl(cnt,0) k_c, 0 Misc_c from bucnt where bu='B'
  union all
  select 0 a_c, nvl(cnt,0) w_c, 0 k_c, 0 Misc_c from bucnt where bu='L'
  union all
  select 0 a_c, 0 w_c, 0 k_c, cnt misc_c from bucnt where ((bu not in ('A','B','L')) or bu is null
)
(Hoffentlich hab' ich da jetzt nix wesentliches übersehen.)

Nachtrag:

Mir fällt gerade auf, dass das "full outer join" ja zu einem kartesischen Produkt führt. Man bekommt also in der Ergebnismenge alle Spalten aller Selects, ohne sie einzeln im Statement "aufführen" zu müssen.
Da schreib' ich lieber ein bisserl mehr und hab' es insgesamt etwas übersichtlicher. Aber das ist dann wohl auch etwas "Geschmacksfrage"

Geändert von nahpets (15. Aug 2016 um 13:25 Uhr) Grund: Noch was nachgeschoben, zu früh abgeschickt.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz