עזרה בשאילתה

עזרה בשאילתה

אני כבר יושבת כמה ימים ושוברת את הראש, ללא שום פתרון
נניח שיש לי מס' שורות כמתואר להלן:

1 5
2 5
3 7
4 7
5 7
6 7
7 7
8 7
9 9
10 9
11 9
12 9
13 7
14 7
15 7

אני רוצה להביא את שורה 13.
זאת אומרת שברצוני להביא את מס' 7 המינימלי הראשון מתוך קבוצה רצופה.
מקווה שתיארתי מספיק טוב..
ועוד יותר מקווה שתוכלו לעזור לי.
תודה מראש, נעמי
 
השאילתה אמורה להיות SQL וכמובן שאם הייתי ..

צריכה את שורה שלוש לא היתה כל בעיה.
יש לי עוד נתונים בכל שורה אך לשם הדוגמה לא היה צורך להביאם.
תודה
 

pitoach

New member
האפיון שלך לא ברור לי

את רוצה להחזיר רק רשומה אחת או את כל הרשומות הראשונות שיש בכל קבוצה

אם זה רק רשומה אחת אז אני לא מבין למה דווקא את רשומה 13 כמו שכתב כלליים ולמה לא את רשומה 3 ?

עוד נסיון להבין: אולי את מחפשת את הרשומה הראשונה בסדרה האחרונה של הנתונים. ז"א הקבוצה האחרונה של הנתונים היא נתונים עם 7 ולכן רוצים את הרשומה הראשונה בסדרה זו ז"א רשומה 13 ?

בכל מקרה הביצוע יהיה בעזרת פונקציות row_number ו/או rank (בהנחה שאת עובדת עם שרת SQL)

* אנא נסי להבהיר את האפיון
 

pitoach

New member
זכרתי שכתבתי בלוג על שאלה דומה
הנה קישור

ישן
http://ariely.info/dnn/Blog/tabid/83/EntryId/68/Select-First-Log-entery-row-from-Log-Table.aspx
תבדקי אם זה עוזר לך
 

גרי רשף

New member
אנסה לתת דוגמה ב-SQL Server

Select *
From (Select Row_Number() Over(Order By GetDate()) Mispar,
*
From MyTbl) T
Where Mispar=13;
כתבתי את הקוד כדי שתצאי עם משהו ביד ושלא תרגישי שבמקום לעזור באים אלייך בדרישות ושאלות קשות, אלא לאחר שהבהרתי זאת עלי לציין כך:
1. אני מבין שאת רוצה לשלוף ב-SQL את שורה 13.
2. אין משמעות לשורה 13 והעובדה שהשורות נשלפות בדרך כלל בסדר בו הן הוכנסו זה בגלל שכך "נוח" למערכת אך זה אינו תמיד כך.
 
הסבר מפורט יותר

קודם כל תודה על ההענות!!
ועכשיו אנסה להסביר בצורה יותר טובה.

אני עובדת עם אינפורמיקס, כך שכנראה אצטרך להשתמש בסינטקס בסיסי למדי.

נניח שיש לי איזשהוא משתמש שהיה תחת ניהול של מספר מנהלים.

כל שורה מייצגת את המנהל האחראי של אותו משתמש, ותאריך מסוים בו יצא לחופש.

המשתמש בשלב מסוים עבר למנהל אחר, יצא למספר חופשים (כל שורה מייצג תאריך), ולאחר מכן חזר למנהל הראשון או לאחר.

אני רוצה לשלוף את התאריך הראשון אצל המנהל האחרון.

תאריך מנהל
1.1.2000 5
1.2.2000 5
1.4.2000 5
1.1.2001 7
1.2.2001 7
1.1.2002 7
1.2.2002 7
1.1.2003 7
1.2.2002 9
1.1.2003 9
1.2.2003 9
1.1.2004 7
1.2.2003 7
1.1.2004 7

מקוה שההסבר ברור יותר.
אגב, ניסיתי להסתכל בקישור אך איני בטוחה שאוכל להשתמש בו.

תודה, נעמי
 

Juventini1

New member
שאילתה

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

אמנם איני יכולה להשתמש ב ROW_NUMBER אך בנתיים הצלחתי למצוא פתרון אחר, באמצעות שדות נוספים שחוסכים לי את הצורך בשימוש זה.
מה שכן באמת רציתי לדעת איך משווים שורה אחת לקודמתה וייתכן שהמידע שנתתם לי יעזור.
בכל אופן תודה רבה על כל העזרה, הענותכם בהחלט מחממת את הלב :)
 

pitoach

New member
כדאי להזכיר שאם תעברו לשרת בגרסה 2012 אז

יש פונקציות חדשות לקבל את הנתון של שורה קודמת או שורה אחרי באופן ישיר (Lead , Lag). אני מדבר כמובן על שרת SQL כי בשרתי אורקל הפונקציות האלו קיימות כבר הרבה שנים
 
למעלה