Frank (no reg): Keine Gruppenfunktion für Einzelgruppe !

Beitrag lesen

Hi,

du willst (lt. deinem Eingangstext) eigentlich summieren und je nachdem was die Summe ergiebt "Schnell", "Mittel" oder "Langsam" ausgeben (respektive ein bit für die einzelnen Werte). Warum verwendest du dann COUNT?

Dein Ergebnis soll dann so aussehen:

ID  |  Dauer_Netto | Aufwand_der_Aufgabe |Schnell|Mittel|Langsam
001|     15       |       15             | 1 | 0 | 0

?

Dann passt aber

002|      x       |       X             |

nicht wirklich ins Schema? Oder? x und X kann man nicht wirklich aufsummieren.

Warum verpackst du die Zusammenrechnung des gesamtaufwandes nicht einfach in eine Unterabfrage?

Also, zb.

SELECT
        -- entscheidung ob langsam, schnell, oder mittel, mit CASE aber ohne COUNT
    FROM
       (SELECT Avg(DauerNetto) AS DauerNetto,
                     Sum(Aufwand) AS AufwandTotal,
                     Count(*) AS AnzahlTeilaufträge,
                     Id
               FROM DeineTabelle
               Group by Id) AS summedUp

Aufgrund der Mehrfachaufführung des identischen Wertes DauerNetto für die selbe Id spekuliere ich mal auf unzureichende Normalisierung. Dadurch das DauerNetto so denormalisiert ist, brauchst du nicht danach Gruppieren, sondern kannst einfach AVG oder Max oder Min nehmen, ergibt dann immer dasselbe. Daran siehst du schon: schlechtes Design.

Ciao, Frank