Varsayalım bu tablo zaten var:
-- Gerçek veri tablon
-- CREATE TABLE Tutarlar (
-- ID INT,
-- Tutar INT
-- );-- Örnek amaçlı değer atayalım:
-- (Eğer tabloda veri varsa bu kısmı atla)
-- INSERT INTO Tutarlar (ID, Tutar) VALUES
-- (1, 100), (2, 200), (3, 500), (4, 1250), (5, 300), (6, 400), (7, 1000);
DECLARE @ID INT, @Tutar INT;
DECLARE @Toplam INT = 0;
DECLARE @GrupNo INT = 1;-- Bellekte tutulacak sonuçlar için tablo değişkeni (diskte tablo yaratmaz!)
DECLARE @Sonuc TABLE (
ID INT,
Tutar INT,
GrupNo INT
);-- Cursor tanımı
DECLARE cur CURSOR FOR
SELECT ID, Tutar FROM Tutarlar ORDER BY ID;OPEN cur;
FETCH NEXT FROM cur INTO @ID, @Tutar;WHILE @@FETCH_STATUS = 0
BEGIN
IF (@Toplam + @Tutar) > 2000
BEGIN
SET @GrupNo = @GrupNo + 1;
SET @Toplam = 0;
END-- Sonuçları tabloya yaz (bellekte tutulur)
INSERT INTO @Sonuc (ID, Tutar, GrupNo)
VALUES (@ID, @Tutar, @GrupNo);SET @Toplam = @Toplam + @Tutar;
FETCH NEXT FROM cur INTO @ID, @Tutar;
ENDCLOSE cur;
DEALLOCATE cur;-- Sonuçları göster
SELECT * FROM @Sonuc ORDER BY GrupNo, ID;