這裏我有學生有RollNumbers和他們的coursecodes的示例數據。按行排(沒有光標或循環)
-------------------------
Roll CourseCode
--------------------------
1011 CS201
2213 CS201
3312 CS101
4000 CS201
1011 CS101
5312 ME102
1011 PT101
3312 ME102
結果應該是Coursecode
和他們的考試日期
e.g(整理出鮮明的Coursecodes)
首先我採摘CS201和分配是coursecode日期;把它放在臨時表中,然後我選擇CS101並檢查臨時表是否該課程代碼的滾動編號與臨時表中的其他課程代碼的任何其他滾動編號相匹配。
---------------------
Code Date
---------------------
CS101 1
CS201 2
ME102 1
PT101 3
我的代碼:
#temp3
包含所有數據(CourseCodes,RollNumbers)#mytemp1
(輸出數據)
和光標包含鮮明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
此代碼工作正常,但服用任何幫助將不勝感激
我們可以使用CTE來有效地做到這一點。將爲您提供一個示例 – ughai 2015-04-02 09:56:43
讓我們[在聊天中繼續討論](http://chat.stackoverflow.com/rooms/74330/discussion-between-kanwar-kakkar-and-ughai)。 – superB 2015-04-02 10:19:26