In einer SQL Server 2012-Datenbank soll ich zählen, wie oft jede "in Dosen" Nachricht für Grundschüler im letzten Schuljahr und der aktuellen verwendet wird Schuljahr.SQL Server 2012 split mehrere Werte in einem Varchar (1200)
Im Moment habe ich den folgenden T-SQL, die Art funktioniert:
USE TEST
SELECT
GS.Comments, COUNT(*) AS [Counts]
FROM
dbo.Enrol Enrol
JOIN
dbo.Student Student ON Student.StudentID = Enrol.StudentID
JOIN
dbo.GS GS ON GS.StudentID = Student.Studentid
AND (GS.Comments IS NOT NULL)
AND (GS.Comments <> '')
WHERE
Enrol.grade IN ('KG', '01', '02', '03', '04', '05', '06')
AND Enrol.endYear BETWEEN 2016 AND 2017
GROUP BY
GS.Comments
ORDER BY
Counts DESC, GS.Comments ASC
Das Problem ist die GS.Comments
Spalt als varchar(1200)
definiert. Es kann eine Nachricht in der Spalte geben und/oder es kann viele Nachrichten in dieser Spalte geben. Jede Nachricht endet mit einem Punkt und zwischen jeder Nachricht befindet sich ein Leerzeichen.
Ein Beispiel für mehrere Nachrichten in der einen GS.Comments
Spalte würde wie folgt aussehen:
This student seems to enjoy school.
:
The student is trying hard and needs to make their time more efficiently. This student is good at math. This student turns in their assignments on time. This student seems to enjoy school.
Ein Beispiel, wenn man Nachrichten in der eine GS.Comments
Spalte wie folgt aussehen würde
So würde mir die T-SQL-Logik zeigen, die ich verwenden kann, wenn die GS.Comments
Spalte mehrere Nachrichten und/oder nur eine Nachricht enthält, so dass ich zählen kann, wie oft jede eindeutige Nachricht verwendet wurde?
können Sie mir ein konkretes Beispiel eine Split-Funktion zu verwenden? – user1816979