משיב מוביל
עדכון טבלה ב SQL

שאלה
-
היי , שאלה לי כזאת:
יש לי טבלה עם שני עמודות account number ו datetime עכשיו היא נראית ככה:
name time
xxx 16:00
yyy 17:00
zzz 18:00
אני מעוניין לצור select שתוצאות שלו ייראו כך:
name starttime end time
xxx 16:00 17:00
yyy 17:00 18:000
האם זה אפשרי אשמח לשמוע פתרונות
שרון
תשובות
-
הי שרון,
A.FlowId = B.FlowId And A.RowId < B.RowId
מתבצעת התאמה עבור כל רשומה ב- select הראשי עם רשומה מה- select הפנימי כך ש- FlowId = FlowId ו- , פה הטריק, הרשומה ב- Outer Apply clause צריכה להיות גדולה מהרשומה הראשית.
אני בחרתי את הרשומה "הבא" ע"י השוואה על מס רץ אך אפשר גם לבחור שדה תאריך, לדוגמא.
בנוסף יש לי בקשה קטנה, אנא תעבור על הפוסטים שלך ובמידה וכבר קיבלת תשובות תסגור אותם.
המשך שבוע טוב,
אסף
אסף שלם- סומן כתשובה על-ידי sharonof יום ראשון 06 מרץ 2011 13:20
כל התגובות
-
-
הי שרון,
צירפתי קוד פשוט, ישנם דרכים רבות לבצע את הפעולה אני ישתמשתי ב- outer apply עם הרשומה הבאה מאותו מזהה.
אפשר להשתמש גם ב- self join עם יש עמודת identity או למיין לפי השעה.
במידה והטבלה גדולה רצוי לעשות אופטימיזציה ע"י אינדקסים, וגם עם לא :).
יום טוב,
אסף
Declare @Flows table (RowId int not null identity(1,1), FlowId char(10), Time1 datetime) Insert @Flows (FlowId, Time1) Select 'AAA' , '16:00' Union All Select 'AAA' , '17:00' Union All Select 'AAA' , '18:00' Union All Select 'BBB' , '16:00' Union All Select 'BBB' , '18:00' Select FlowId, Convert(nvarchar(2), datepart(hh, A.time1)) + ':00', Convert(nvarchar(2), datepart(hh,Q.Time1)) + ':00' From @Flows A Outer Apply ( Select top 1 B.Time1 From @Flows B Where A.FlowId = B.FlowId And A.RowId < B.RowId Order by B.RowId Asc )Q Where Q.Time1 is not null
אסף שלם -
-
הי שרון,
A.FlowId = B.FlowId And A.RowId < B.RowId
מתבצעת התאמה עבור כל רשומה ב- select הראשי עם רשומה מה- select הפנימי כך ש- FlowId = FlowId ו- , פה הטריק, הרשומה ב- Outer Apply clause צריכה להיות גדולה מהרשומה הראשית.
אני בחרתי את הרשומה "הבא" ע"י השוואה על מס רץ אך אפשר גם לבחור שדה תאריך, לדוגמא.
בנוסף יש לי בקשה קטנה, אנא תעבור על הפוסטים שלך ובמידה וכבר קיבלת תשובות תסגור אותם.
המשך שבוע טוב,
אסף
אסף שלם- סומן כתשובה על-ידי sharonof יום ראשון 06 מרץ 2011 13:20