我有一個MS SQL存儲過程,它使用遊標循環選擇語句的記錄。當我循環讀取每條記錄時,它可能是3,然後是3,也可能是3,然後是4,然後是5,然後是3.它可以是一個記錄,也可以是多個記錄。有沒有辦法循環記錄集並識別不同的值?
我需要知道的是所有的值是相同還是不同?只要他們相同或不同,我不在乎他們是什麼。如果我正在用客戶端代碼來做這件事,我會使用一個列表,看看這個值是否在列表中,然後當我完成的時候,我會計算出這些值,如果一個值超過1則不同。
DECLARE TC CURSOR LOCAL
FOR SELECT ProgramID FROM tblPublications
OPEN TC
FETCH NEXT FROM TC INTO @ProgramID
WHILE @@FETCH_STATUS = 0
BEGIN
Print @ProgramID
--Same or Different then the last one???
FETCH NEXT FROM TC2 INTO @ProgramID
END
CLOSE TC
DEALLOCATE TC
END
如果它們是相同的話,我會更新記錄的一種方式,如果他們是不同的,那麼更新狀態記錄的另一種方式。
感謝
有可能是一個更好的方法做,你沒有循環或光標在做什麼。你會擴展你的問題嗎? – SqlZim
我們不希望在sql中計算值時使用循環。我們使用聚合而不是。像count(YourValue)。給我們一些關於數據和期望輸出的實際細節,我們可以提供幫助。這裏是一個開始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
我有一份屬於各個部門作者的出版物清單。如果所有作者都來自同一個部門,那麼如果更多的部門參與扭轉出版物,則該出版物被認爲是內部部門,那麼它被認爲是國際部門。我的記錄集包含基於PublicationID的部門/ programid,因此 - SELECT ProgramID其中,PublicationID = 12345 - 現在我需要查看ProgramID的相同或不同 – user1314159