Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Frage zum crossqry syntax fehler (https://www.delphipraxis.net/111464-frage-zum-crossqry-syntax-fehler.html)

d6lpz 3. Apr 2008 20:28

Datenbank: Access • Version: 2k • Zugriff über: ADO

Frage zum crossqry syntax fehler
 
Ich habe versucht eine Qry mit einer CrossQry zu kombinieren. Leider funktioniert das irgendwie nicht.
Geht das überhaupt?

TRANSFORM First(TContent.sshort) AS FirstOfcontent
SELECT
TMainTimes.sdate,
PEmployee.srotation,
TMainTimes.spersonalId,
PEmployee.sname,
TMainTimes.sshift,
PEmployee.sworkcenter,
TContent.sshort
FROM PEmployee
INNER JOIN (TMainTimes
INNER JOIN TContent
ON TMainTimes.scontent = TContent.scontent)
ONPEmployee.spersonalId = TMainTimes.spersonalId
WHERE (((TMainTimes.sdate)
Between [datStart] And [datEnd]) AND ((PEmployee.srotation)=[ShiftName]) AND ((PEmployee.sworkcenter)=[Wc]))
GROUP BY PEmployee.sname,
PIVOT DatePart("d",[TMainTimes.sdate,]);

Es kommt die Meldung "Syntax Fehler in der Group By Klasuel"
Falls sich hier jemand durchfindet...

ich freue mich über jeden Hinweis
Dirk

mkinzler 3. Apr 2008 20:31

Re: Frage zum crossqry syntax fehler
 
Bei einer Gruppierung müssen die Felder in der Abfrageliste entweder in der Gruppierung stehen oder als Aggregat vorliegen.

d6lpz 3. Apr 2008 20:41

Re: Frage zum crossqry syntax fehler
 
Zitat:

Zitat von mkinzler
Bei einer Gruppierung müssen die Felder in der Abfrageliste entweder in der Gruppierung stehen oder als Aggregat vorliegen.

Sorry - aber kannst du mir etwas aufhelfen.
Wie meinst du das genau?
Dirk

mkinzler 3. Apr 2008 20:50

Re: Frage zum crossqry syntax fehler
 
Es werden ja alle Datensätze, die die gleichen Werte der gruppierten Felder zu einem Datensatz verschmolzen werden, existieren dann keine einzelnen Datensätze mehr. Du musst deshalb für die Felder, nach denen nicht gruppiert wird angeben, welche Werte für diese genommen werden sollen ( kleinster, größter, Durchschnitt, Summe, ...); man spricht hier von Aggegatsfunktionen: MIN(), MAX(), AVG(), SUM(), ...

d6lpz 4. Apr 2008 01:05

Re: Frage zum crossqry syntax fehler
 
Zitat:

Zitat von mkinzler
Es werden ja alle Datensätze, die die gleichen Werte der gruppierten Felder zu einem Datensatz verschmolzen werden, existieren dann keine einzelnen Datensätze mehr. Du musst deshalb für die Felder, nach denen nicht gruppiert wird angeben, welche Werte für diese genommen werden sollen ( kleinster, größter, Durchschnitt, Summe, ...); man spricht hier von Aggegatsfunktionen: MIN(), MAX(), AVG(), SUM(), ...

Danke für deine Hinweise, es funktioniert jetzt auch.
sieht jetzt so aus:

TRANSFORM First(TContent.short) AS FirstOfcontent
SELECT TMainTimes.personalId, PEmployee.workcenter, [name]+','+[forename] AS EmplName
FROM PEmployee
INNER JOIN (TMainTimes
INNER JOIN TContent ON TMainTimes.content = TContent.content) ON PEmployee.personalId = TMainTimes.personalId
WHERE (((DatePart("m",[date],1))=:f_month)
AND ((PEmployee.rotation)=:f_rotation)
AND ((DatePart("yyyy",[date],1))=:f_year)
AND ((PEmployee.workcenter)=:f_wc))
GROUP BY TMainTimes.personalId, PEmployee.workcenter, [name]+','+[forename], PEmployee.rotation
ORDER BY PEmployee.workcenter, [name]+','+[forename]
PIVOT (DatePart("d",[date],1))

Danke nochmal
Dirk


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 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