Ich habe diese TabelleSUM und ORDER BY
Pupil ID Fname Lname Form House Week Nr Data
104 fname1 lname1 Year 5W Junior Frobisher 3 5
106 fname2 lname2 Year 4W Junior Grenville 2 5
106 fname2 lname2 Year 4W Junior Grenville 3 4
106 fname2 lname2 Year 4W Junior Grenville 4 3
106 fname2 lname2 Year 4W Junior Grenville 5 5
107 fname3 lname3 Year 5W Junior Grenville 1 1
107 fname3 lname3 Year 5W Junior Grenville 2 3
107 fname3 lname3 Year 5W Junior Grenville 3 5
107 fname3 lname3 Year 5W Junior Grenville 4 1
SELECT PPD.PupilID, PPD.Forename, PPD.Surname, FL.[Description] AS 'Form', HL.[Description] AS 'House', CAST(REPLACE(CM.ColumnTitle, 'Week ', '') AS INT) AS 'WeekNo',CAST(MSDN.Data AS INT) AS 'Data', SUM(CAST(MSDN.Data AS INT)) AS 'Total'
FROM CurrentPupil
INNER JOIN PupilPersonalDetails AS PPD ON PPD.PupilID = CurrentPupil.PupilID
INNER JOIN PupilCurrentSchool AS PCS ON PCS.PupilID = PPD.PupilID
INNER JOIN SchoolLookupDetails AS FL ON PCS.Form = FL.LookupDetailsID AND FL.LookupID = 1002
INNER JOIN SchoolLookupDetails AS HL ON PCS.House = HL.LookupDetailsID AND HL.LookupID = 1001
INNER JOIN MarksheetDataNumeric AS MSDN ON MSDN.PupilID = PPD.PupilID
INNER JOIN ColumnsMaster AS CM ON CM.ColumnID = MSDN.ColumnID AND CM.ColumnTitle LIKE '%week%'
INNER JOIN ClusterMaster AS CLM ON CLM.ClusterID = SUBSTRING(PPD.SchoolID, 0, 4)
INNER JOIN ColumnReportingPeriods AS CRP ON CRP.ColumnID = CM.ColumnID
INNER JOIN ReportingPeriods AS RP ON RP.AcademicYear = CLM.CurrentAcademicYear AND RP.ReportingPeriodID = CRP.ReportingPeriodID
WHERE ('%wc%' = '%wc%')
GROUP BY PPD.PupilID
Ich versuche
die folgende Spalte CAST (MSDN.Data AS INT) AS 'Daten' zu summieren und eine neue als hinzufügen Gesamtpunkte für jede ID (Schüler) CAST (MSDN.Daten AS INT) AS 'Daten', SUMME (CAST (MSDN.Data AS INT)) AS 'Gesamt', (ich denke, es ist richtig!) aber die Ergebnis ist: Spalte PupilPersonalDetails.ForeName ist in der Auswahlliste ungültig, da es nicht in einer Aggregatfunktion oder dem GRO enthalten ist UP BY-Klausel.
Sie müssen nicht MSDN.Data zu INT, aber MSDN.Data und SUM (MSDN.Data) nicht in einer Auswahl gemäß Ihrem Fall haben. –
In den meisten Datenbanken müssen die Felder, die Sie in der Auswahl verwenden, auch in GROUP BY sein. Außer denen in einer Aggregatfunktion wie MAX, SUM, ... – LukStorms