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

יום שישי, מרץ 16, 2012

האם ניתן לחשב סכום מצטבר (Running Sum) תוך פניה אחת לטבלה וללא שימוש בפונקציות החלון החדשות שבגרסת 2012? בפוסט מתחילת החודש טיפלתי בנושא חישובי מלאי- חישובים שכרוכים בחישוב סכומים מצטברים, והראיתי כיצד השימוש בפונקציות החלון החדשות של גרסת 2012 מייעלות את החישובים בצורה משמעותית, בעיקר מפני שמתבצע Scan אחד על הטבלה. בפוסט אחר ישן יותר הראיתי כיצד ניתן לבצע Lag & Lead תוך פניה אחת לטבלה (כלומר- ללא Join עצמי או שאילתת משנה הפונה לטבלה) וללא שימוש בפונקציות החלון החדשות של גרסת 2012; ותהיתי אם ניתן לחזור על התרגיל הזה גם כאן. ...
אין תגובות

השימוש בטריגרים

יום שלישי, פברואר 14, 2012

טריגר על פעולות DML בטבלה הוא כלי מוכר יחסית, אך לא כל האופציות מוכרות; ואולי מתבלבלים לעיתים בינו לבין טריגרים אחרים. הפוסט הזה עוסק בטריגרים על טבלאות שמופעלים בעקבות ביצוע פעולות Delete / Update / Insert בטבלה עליה הם הוגדרו. הטריגרים אינם מופעלים בעת ביצוע פקודת Select או Truncate, שינוי סכימה של טבלה, או כל שינוי שהוא באובייקטים של המערכת; ולכל אלו יש פתרונות אחרים. כדי לפשט את הדוגמאות- אשתמש בכל פעם בטבלה אחת בלבד, והטריגרים יפעילו פקודות Print או Select כדי להמחיש את הפעולה שלהם. במציאות הטריגרים אמורים להפעיל בדרך כלל פקודות Insert לטבלת לוג...

יצירת כל תתי הקבוצות של קבוצה נתונה

יום שני, דצמבר 6, 2010

לכל קבוצה בגודל n יש 2n תת קבוצות, למשל- לקבוצה {A,B,C} יש תת קבוצות {A},{B},{C},{A,B},{A,C},{B,C}; נוסיף להן את הקבוצה המקורית ואת הקבוצה הריקה ונקבל 8=23 תת קבוצות. אם נבחר קבוצה בת 4 איברים- אפשר באותה שיטה למצוא את 16=24 תת הקבוצות שלה, או לעשות חשבון פשוט- לכל תת קבוצה של הקבוצה בת 3 האיברים ניתן להוסיף את האיבר הרביעי וניתן לא להוסיף; כלומר- מכל תת קבוצה של n=3 נקבל 2 תת קבוצות עבור n=4 ובסה"כ 16. כך מוכיחים באופן כללי את הנוסחה באינדוקציה, וזה גם ישמש אותנו ליצור את תת הקבוצות בהמשך. ...
אין תגובות

יחס של רבים לרבים ללא טבלת עזר

יום רביעי, ינואר 6, 2010

בדרך כלל יחס של רבים לרבים בין שתי טבלאות ממומש באמצעות טבלת עזר שמקשרת בין שתי הטבלאות, והמפתח הראשי שלה הוא צירוף המפתחות הראשיים של שתיהן. ניתן במקרה הצורך ליצור יחס של רבים לרבים ללא טבלת עזר. אינני יודע מתי זה טוב, אבל זה אפשרי ולהלן שתי דרכים. נניח שבעירנו יש מספר מוסדות תרבות, כל אחד פתוח בימים אחרים במהלך השבוע, ואנחנו מעוניינים להחזיק את המידע הזה. נקים קודם כל את טבלת ימי השבוע: Create Table #T_Yamim(Yom Int,Shem VarChar(Max)) Insert Into #T_Yamim Select 1,'א' Insert Into #T_Yamim Select 2,'ב' Insert Into #T_Yamim Select 3,'ג' Insert Into #T_Yamim Select 4,'ד' Insert Into #T_Yamim Select 5,'ה' Insert Into #T_Yamim Select 6,'ו' Insert Into #T_Yamim...
אין תגובות