hi olga
oh schande - nicht fertig gelesen.
du hast recht: die letzte summenzeile wird schwierig. zwei lösungen fallen mir ein, vorausgesetzt du verwendest oracle und sqlplus:
-
sqlplus bietet rudimentäre reporting-funktionen, mit der du spalten aufsummieren kannst. damit klappt es auf jeden fall - allerdings nur innerhalb von sqplus.
-
andere möglichkeit, die immer funkt, auch ohne sqlplus: eine zweites select, mit der nur die summe selected wird und dann eine union darüber. damit das zweite select immer am ende kommt, muss man eine zusätzliche pseudospalte selektieren: im erste select einfach als letzte spalte den fixen wert „1“ und im zweiten den wert „2“. sortiert wird zuerst nach der letzten spalte und dann nach den anderen spalten. nachteil: du hast eben eine zusätzliche spalte, die möglicherweise stört. in sqlplus kannst du diese spalte mit „col xxx noprint“ ausblenden. in anderen programmen geht es vielleicht ähnlich.
hier mal das fertige beispiel:
select priorität,
sum(decode(sign(dauer - 1),1,0,1)) "\>0\>=1",
sum(decode(sign(dauer - 1) + (sign(dauer - 4.0000001)\*-1),2,1,0)) "\>1\>=4",
sum(decode(sign(dauer - 4) + (sign(dauer - 8.0000001)\*-1),2,1,0)) "\>4\>=8",
count(\*) "Summe",
'1' sorter
from tabelle
where dauer 0\>=1",
sum(decode(sign(dauer - 1) + (sign(dauer - 4.0000001)\*-1),2,1,0)) "\>1\>=4",
sum(decode(sign(dauer - 4) + (sign(dauer - 8.0000001)\*-1),2,1,0)) "\>4\>=8",
count(\*) "Summe",
'2' sorter
from tabelle
where dauer
wenn die reihenfolge der zeilen (also summe am schluss) unwichtig ist, dann kannst du dir natürlich die pseudospalte und das order-by sparen. in diesem speziellen beispiel würde sogar das sortieren nur nach der ersten spalte ja ausreichen, da "S" nach "N" kommt. wenn die prioritäten frei eingebbar sind, wirst du aber für eine saubere reihenfolge auf jeden fall die pseudospalte brauchen.
wenn man das häufiger braucht und sich die schwellwerte nicht ändern, ist natürlich das anlegen einer view angebracht - man spart sich viel tipparbeit.
erwin