Einzelnen Beitrag anzeigen

Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#1

group by auf 1 Spalte, aber noch weitere Spalten ausgeben

  Alt 1. Mai 2017, 16:39
Datenbank: Pervasive • Version: 12 • Zugriff über: PDAC
Hallo,

ich tue mich schwer mit einer bestimmten Anforderung.
So wie ich es kenne, müssen in einer Group by-Klausel *alle* Spalten aufgeführt werden, die im Select stehen und nicht aggregiert sind.

Ich will nun nur nach 1 Spalte gruppieren, aber weitere Spalten mit ausgeben.

Das funktioniert:
Code:
Select LTrim(CA.PersNr) as PersNr,
Sum(Case when F3.Tages_Sollzeit <> '' and F3.Flag_Ft <> 2 then (1) else 0 end) as Integer,
Sum(1) as Integer
from Pers_Buchungen_PC as F3, Personalstamm AS CA
LEFT JOIN Werk AS B1 ON CA.StandortNr = B1.StandortNr
LEFT JOIN Abteilung AS B2 ON CA.Abteilung = B2.AbteilungNr
LEFT JOIN Orgaeinheit AS MF ON CA.OrgaEinNr = MF.OrgaEinNr        
LEFT JOIN GruppePerson AS MG ON CA.GruppenNr = MG.GruppenNr
LEFT JOIN KST_Stamm AS FQ ON CA.Kostenstelle = FQ.KStelleNr
where CA.Identifikation = F3.RecID_CA and F3.Flag_Kr = 2 and
F3.Datum > cast(Datepart(Year,Current_date())-2 as Char(4)) + '1231' and F3.Datum < cast(Datepart(Year,Current_date()) as Char(4)) + '0101'
group by PersNr
Ich brauche aber sowas:
Code:
Select LTrim(CA.PersNr) as PersNr, CA.Name, CA.Vorname, B1.Bezeichnung, ..... // <-- hier weitere Spalten, die aber nicht in der "Group by-Klausel" stehen dürfen wegen dem richtigen
//Ergebnis der Summierungen (Summen sollen immer pro Person sein)
Sum(Case when F3.Tages_Sollzeit <> '' and F3.Flag_Ft <> 2 then (1) else 0 end) as Integer,
Sum(1) as Integer
from Pers_Buchungen_PC as F3, Personalstamm AS CA
LEFT JOIN Werk AS B1 ON CA.StandortNr = B1.StandortNr
LEFT JOIN Abteilung AS B2 ON CA.Abteilung = B2.AbteilungNr
LEFT JOIN Orgaeinheit AS MF ON CA.OrgaEinNr = MF.OrgaEinNr        
LEFT JOIN GruppePerson AS MG ON CA.GruppenNr = MG.GruppenNr
LEFT JOIN KST_Stamm AS FQ ON CA.Kostenstelle = FQ.KStelleNr
where CA.Identifikation = F3.RecID_CA and F3.Flag_Kr = 2 and
F3.Datum > cast(Datepart(Year,Current_date())-2 as Char(4)) + '1231' and F3.Datum < cast(Datepart(Year,Current_date()) as Char(4)) + '0101'
group by PersNr
Ich vermute ich muss die benötigten Spalten die nicht in der Group by-Klausel stehen in einer Unterabfrage ausgeben.
Da weiß ich aber nicht wie ich das hinbekomme. Ich habe schon einiges mit Union versucht, scheitere aber an der Syntax und am Verständnis.

Weiß hier jemand Rat?

Vielen Dank schon mal vorab!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat