Tutaj mam przykładowe dane studentów mających RollNumbers i ich kody kursu.Wiersz po wierszu (bez kursora lub pętli)
-------------------------
Roll CourseCode
--------------------------
1011 CS201
2213 CS201
3312 CS101
4000 CS201
1011 CS101
5312 ME102
1011 PT101
3312 ME102
Wynik powinien być Coursecode
a ich data egzaminu
np (uporządkować Wyraźne Coursecodes)
pierwsze jestem zbieranie CS201 i przypisanie tej coursecode datę; umieszczenie go w tabeli tymczasowej, a następnie wybrałem CS101 i sprawdzenie w tabeli tymczasowej, czy numery RollNumber tego kodu Course pasują do innych numerów RollLiczba innych kodów kursu w tabeli tymczasowej.
---------------------
Code Date
---------------------
CS101 1
CS201 2
ME102 1
PT101 3
mój kod:
#temp3
zawiera wszystkie dane (CourseCodes, RollNumbers)#mytemp1
(dane wyjściowe)
i Kursor zawiera odrębny 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
Ten kod działa poprawnie, ale przy zbyt wiele czasu (4110222 Records)
Każda pomoc będzie mile widziane
Możemy użyć CTE, aby zrobić to skutecznie. przygotuje dla ciebie przykład – ughai
Pozwól nam [kontynuować tę dyskusję na czacie] (http://chat.stackoverflow.com/rooms/74330/discussion-between-kanwar-kakkar-and-ughai). – superB