סתם כי גם לי בא לענות...
למרות שהוא מעט מורכב יותר.... אבל הוא נותן מענה גם לקפיצה של יותר ממספר אחד ברצף.
-- יצירת טבלא זמנית המדמה את השאלה C REATE table #numbers (value int) i nsert INTO #numbers(value) S ELECT 1 union S ELECT 2 union SE LECT 5 union S ELECT 6 union S ELECT 9 union S ELECT 10 D ECLARE @ind int, @ maxValue int, @ C urrentValue int s et @ind = 1 -- מציאת ערך המקסימום בטבלת המקור s elect @maxValue = max(value) FROM # numbers -- יצירת טבלא שתחזיר את התוצאות C reate t able #Result(value int) w hile @ind < = @m axValue Begin -- איפוס משתנה הבקרה s et @CurrentValue = null -- טעינת משתנה הקרה s elect @CurrentValue = value FROM # numbers where value = @ind -- בדיקה האם יש להוסיף את הערך לטבלת התוצאות I F @Cu rrentValue is null Begin -- הוספת הערך לטבלת התוצאות i nsert into #Result(value) VALUES(@ind) End SET @ind = @ind + 1 End -- הצגת טבלת המקור SELECT * from #numbers -- הצגת התוצאות select * from #result -- מחיקת הטבלאות הזמניות dr op table #numbers dr op table #result
ולחשוב שכל כך הרבה זמן לא היית יכאן...... כאילו זה היה אתמול