AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken group by auf 1 Spalte, aber noch weitere Spalten ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

group by auf 1 Spalte, aber noch weitere Spalten ausgeben

Ein Thema von juergen · begonnen am 1. Mai 2017 · letzter Beitrag vom 1. Mai 2017
Antwort Antwort
Benutzerbild von juergen
juergen

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

group by auf 1 Spalte, aber noch weitere Spalten ausgeben

  Alt 1. Mai 2017, 17: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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: group by auf 1 Spalte, aber noch weitere Spalten ausgeben

  Alt 1. Mai 2017, 17:44
Wenn du Views anlegen darfst dann mach es so:

1, Definierte dein SELECT mit group by als View
2, Nimm dieses View und füge über einen einfachen Join deine weiteren Spalten hinzu.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

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

AW: group by auf 1 Spalte, aber noch weitere Spalten ausgeben

  Alt 1. Mai 2017, 20:06
Danke Bernhard! Leider habe ich nur einen Readonly Zugriff auf die DB.
Das Problem hat sich aber erledigt.
Da ich die Daten in Delphi noch weiter aufbereiten muss, komme ich über 2 Querys die ich dann über Delphi-Boardmittel zusammen führe, zu meinem Ergebnis.
Allen noch einen schönen Feiertag!
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
Antwort Antwort


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 03:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz