קורה שאנו רוצים בסקריפט למצוא רשומה עם ערך מינימום או מקסימום של שדה, אך לשלוף שדה אחר של אותה רשומה.
למשל: להוסיף לטבלת לקוחות, את המוצר האחרון שהלקוח קנה. (לא את תאריך הקנייה, אלא את מק"ט המוצר).
ניתן ליצור זאת בסקריפט בקלות, ע"י שימוש בפונקציה SubField:
למשל: להוסיף לטבלת לקוחות, את המוצר האחרון שהלקוח קנה. (לא את תאריך הקנייה, אלא את מק"ט המוצר).
ניתן ליצור זאת בסקריפט בקלות, ע"י שימוש בפונקציה SubField:
left join (Customers)
load
CustomerID,
subfield(maxstring(date(SaleDate,'YYYY-MM-DD hh:mm:ss') & '>' & ProductID),'>',2) as Last_Product
resident
Orders
group by
CustomerID;
CustomerID;
הסבר - מפנים הפונקציה החוצה:
ראשית אנו מפרמטים את תאריך המכירה, מיחידת הזמן הגדולה (שנה) ליחידת הזמן הקטנה (שנייה), וזאת כי בהמשך נשתמש בפונקציית maxstring שממיינת באופן טקסטואלי. הפרמוט באופן הזה מבטיח שהתאריכים ימוינו נכון.
את התאריך המפורמט אנחנו משרשרים לתו < ולמק"ט המוצר. בינתיים הערכים נראים כך:
2011-02-14 10:14:33 > 146782
על הביטוי הזה אנו מפעילים פונקציית maxstring. יוצא שלכל לקוח משויך ביטוי של תאריך הרכישה האחרונה שלו, משורשר למק"ט המוצר באותה רכישה.
לבסוף אנו מפעילים פונקציית subfield, ומעבירים לה את הפרמטר < ו-2, כדי שתחלץ מהביטוי הנ"ל את האבר השני שבתוכו, כאשר החלוקה לאברים היא לפי התו <.
קיבלנו עבור כל לקוח, את מק"ט המוצר שהוא קנה אחרון.
אין תגובות:
הוסף רשומת תגובה