Ich muss nach einer Spalte gruppieren, die Tabelle enthält auch die XML-Spalte.Gruppieren nach einer Spalte - SQL Server
Tabellenschema: StudentMark:
CREATE TABLE [dbo].[StudentMark]
(
[StudentMarkId] [int] IDENTITY(1,1) NOT NULL,
[StudentId] [uniqueidentifier] NULL,
[SubjectId] [uniqueidentifier] NULL,
[ScoreInfo] [xml] NULL,
[GeneratedOn] [datetime2](2) NOT NULL,
CONSTRAINT [PK_StudentMark]
PRIMARY KEY CLUSTERED ([StudentMarkId] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Beispiel Seed-Daten
INSERT INTO [dbo].[StudentMark] ([StudentId], [SubjectId], [ScoreInfo], GeneratedOn])
VALUES ('FC3CB475-B480-4129-9190-6DE880E2D581', '0D72F79E-FB48-4D3E-9906-B78A9D105081', '<StudentMarkAttribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></StudentMarkAttribute>', '2017-08-10 10:20:15'),
('0F4EF48C-93E3-41AA-8295-F6B0E8D8C3A2', '0D72F79E-FB48-4D3E-9906-B78A9D105081', '<StudentMarkAttribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></StudentMarkAttribute>', '2017-08-10 10:20:15'),
('0F4EF48C-93E3-41AA-8295-F6B0E8D8C3A2', 'AB172272-D2E9-49E1-8040-6117BB6743DB', '<StudentMarkAttribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></StudentMarkAttribute>', '2017-08-16 09:06:20'),
('FC3CB475-B480-4129-9190-6DE880E2D581', 'AB172272-D2E9-49E1-8040-6117BB6743DB', '<StudentMarkAttribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></StudentMarkAttribute>', '2017-08-16 09:06:20');
Anforderung: Ich muss zu einer Gruppe von [dbo].[StudentMark].[StudentId]
und die letzte Platte nehmen.
Ich habe versucht, die folgende SQL-Abfrage, aber es verursacht einen Fehler
SELECT
MAX([StudentMarkId]), [StudentId], [SubjectId], [ScoreInfo], [GeneratedOn]
FROM
[dbo].[StudentMark]
GROUP BY
[StudentId]
Fehler:
Spalte 'dbo.StudentMark.SubjectId' in der Auswahlliste ungültig ist, weil es weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten.
ich jemals die folgende Frage, aber ich kann es nicht reparieren: Reason for Column is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
bitte mir helfen.
Könnten Sie bitte bestätigen, können wir nicht die 'Gruppe von' verwenden? anstelle von 'Row_Number' Ansatz? –
@ B.Balamandigandan Sie können GROUP BY nicht in der von Ihnen vorgeschlagenen Weise verwenden. Ihr Problem ist klar "größte Nth pro Gruppe" – lad2025
Könnten Sie bitte bestätigen, welche Antwort vorzuziehen ist? In Bezug auf die Optimierung aus zwei Antworten? –