שאלת SQL מראיון עבודה

pitoach

New member
זה לא הפונקציות היחידות שיש באורקל שנים ורק

בגרסה הבאה של SQL נוספים
למעשה יש איפוס מבחינת מייקרוסופט אני חושב לגבי דברים שהיו באורקל ועתה יוספו לשרתי SQL (אבל בוא לא נשכח שהפוך זה לא נכון ומה שיש ב SQL לא בהכרח קיים באורקל... בטח גם הפוך יהיה איפוס בגרסה הבאה של אורקל) * הערה: לשאלה הנוכחית לא בטוח שהשימוש ב LAG הוא הדרך המיטבית בכל מסד נתונים ואני מציע לבדוק ספציפית במסד הנתונים עליו עובדים ולהשוות לדרך שהצעתי מעל (מיטוב שאילתה הוא פעולה תלויית מסד נתונים ספציפי).
 
סתם כי גם לי בא לענות...

למרות שהוא מעט מורכב יותר.... אבל הוא נותן מענה גם לקפיצה של יותר ממספר אחד ברצף.
-- יצירת טבלא זמנית המדמה את השאלה 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​
ולחשוב שכל כך הרבה זמן לא היית יכאן...... כאילו זה היה אתמול
 
למעלה