Hier habe ich Beispieldaten von Studenten mit RollNumbers und ihre Kurscodes.Zeile für Zeile (ohne Cursor oder Schleifen)
-------------------------
Roll CourseCode
--------------------------
1011 CS201
2213 CS201
3312 CS101
4000 CS201
1011 CS101
5312 ME102
1011 PT101
3312 ME102
Ergebnis sollte Coursecode
und ihre Prüfungstermin sein
beispiels (aussortieren Distinct Coursecodes)
Zuerst habe ich CS201 bin Kommissionierung und Zuweisen dass coursecode ein Datum; Wenn ich es in eine temporäre Tabelle platziere, dann wählte ich CS101 und checkt in der temporären Tabelle ein, ob die RollNumbers dieses Coursecodes mit einer anderen RollNumber eines anderen Coursecodes in der temporären Tabelle übereinstimmen.
---------------------
Code Date
---------------------
CS101 1
CS201 2
ME102 1
PT101 3
Mein Code:
#temp3
enthält alle Daten (CourseCodes, RollNumbers)#mytemp1
(Ausgangsdaten)
und Cursor enthält die Distinct coursecodes
SET @cursor = CURSOR FOR
SELECT DISTINCT coursecode
FROM #temp3
ORDER BY CourseCode
OPEN @cursor
FETCH NEXT
FROM @cursor INTO @cursorid
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
SET @j=1
WHILE(@j !=9999999)
BEGIN
IF(SELECT COUNT(*) FROM #temp3 WHERE CourseCode = @cursorid AND RegdNo IN (
SELECT RegdNo FROM #temp3 WHERE CourseCode IN (SELECT coursecode FROM #myTemp1 WHERE counter1 = @j)
)) = 0
BEGIN
INSERT INTO #myTemp1 VALUES (@cursorid,@j)
SET @j=9999999
END
ELSE
BEGIN
SET @j = @j + 1
END
END
END
FETCH NEXT
FROM @cursor INTO @cursorid
END
CLOSE @cursor
DEALLOCATE @cursor
Dieser Code funktioniert gut, aber zu viel Zeit (4.110.222 Datensätze)
Jede Hilfe
Wir können CTE verwenden, um dies effizient zu tun. wird ein Beispiel für dich erarbeiten – ughai
Lass uns [diese Diskussion im Chat fortsetzen] (http://chat.stackoverflow.com/rooms/74330/discussion-between-kanwar-kakkar-and-ughai). – superB