טכניקות מתקדמות להמרת שורות לעמודות ב-SQL
טכניקות מתקדמות להמרת שורות לעמודות שימושיות כאשר נדרשת גמישות בטיפול בנתונים מורכבים. טכניקות דינמיות וטיפול במספר עמודות בו זמנית מאפשרות לך להמיר נתונים בתרחישים שבהם השינוי הסטטי מוגבל. בואו נגלות את שתי השיטות בפרט.
פיבוט דינמי
פיבוטים דינמיים מאפשרים לך ליצור שאילתות פיבוט שמסתדרות באופן אוטומטי לשינויים בנתונים. טכניקה זו מועילה במיוחד כאשר יש לך עמודות שמשתנות בתדירות, כמו שמות מוצרים או קטגוריות, ואתה רוצה ששאילתתך תכלול באופן אוטומטי רשומות חדשות מבלי לעדכן אותה באופן ידני.
נניח שיש לנו טבלת SalesData
ואנו יכולים ליצור Pivot דינמי שמתאים אם מוצרים חדשים מתווספים. בשאילתה למטה, @columns
בונה דינמית את רשימת העמודות הפיבוט, ו־sp_executesql
מפעיל את ה־SQL שנוצר.
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX); -- שלב 1: יצירת רשימת מוצרים ייחודים לפיבוט SELECT @columns = STRING_AGG(QUOTENAME(Product), ', ') FROM (SELECT DISTINCT Product FROM SalesData) AS products; -- שלב 2: בניית שאילתת SQL דינמית SET @sql = N' SELECT Date, ' + @columns + ' FROM (SELECT Date, Product, Sales FROM SalesData) AS source PIVOT ( SUM(Sales) FOR Product IN (' + @columns + ') ) AS pivot_table;'; -- שלב 3: ביצוע ה־SQL הדינמי EXEC sp_executesql @sql;
טיפול במספר עמודות
בתרחישים שבהם נדרש לפוט מספר עמודות בו זמנית, יש להשתמש באופרטור PIVOT
ובטכניקות כפילות נוספות כדי ליצור מספר עמודות באותה שאילתה.
בדוגמה למטה, פיבוטתי את עמודות Sales
ו־Quantity
לפי Product
.
-- צירוף מכירות וכמות למחשב נייד ועכבר לפי תאריך SELECT p1.Date, p1.[Laptop] AS Laptop_Sales, p2.[Laptop] AS Laptop_Quantity, p1.[Mouse] AS Mouse_Sales, p2.[Mouse] AS Mouse_Quantity FROM ( -- צירוף עבור מכירות SELECT Date, [Laptop], [Mouse] FROM (SELECT Date, Product, Sales FROM SalesData) AS source PIVOT (SUM(Sales) FOR Product IN ([Laptop], [Mouse])) AS pivot_sales ) p1 JOIN ( -- צירוף עבור כמות SELECT Date, [Laptop], [Mouse] FROM (SELECT Date, Product, Quantity FROM SalesData) AS source PIVOT (SUM(Quantity) FOR Product IN ([Laptop], [Mouse])) AS pivot_quantity ) p2 ON p1.Date = p2.Date;
דוגמה על ייצוג פלט של עמודות מרובות באמצעות אופרטור PIVOT ב-SQL. תמונה מאת המחבר.
צירוף של עמודות מרובות מאפשר דוחות מפורטים יותר על ידי צירוף תכונות מרובות לפריט, מאפשר תובנות עשירות יותר. אף על פי שהתחביר עשוי להיות מורכב, במיוחד אם קיימים הרבה עמודות. ייתכן שיידרש הקודה קשה אלא אם ישמשו טכניקות צירוף דינמיות, מוסיפות מורכבות נוספת.
מסקנה
צירוף שורות לעמודות הוא טכניקת SQL ששווה ללמוד. ראיתי טכניקות צירוף של SQL משמשות ליצירת טבלת שמירת מערכת קוהורט, שבה ניתן לעקוב אחר שמירת המשתמשים לאורך זמן. ראיתי גם טכניקות צירוף של SQL משמשות בניתוח נתוני סקרים, שבהם כל שורה מייצגת נבדק, וכל שאלה יכולה להיות צירופית לעמודתה.
הקורס שלנו בנושא דיווחים ב-SQL הוא אפשרות נהדרת אם אתה רוצה ללמוד יותר על סיכום והכנת נתונים למצגות ו/או בניית דאשבורדים. מסלולי הקריירה שלנו בתחום מנתח נתונים משווק ב-SQL ו-מהנדס נתונים משווק ב-SQL הם רעיון נהדר נוסף, והם מוסיפים המון לכל קורות החיים, לכן הירשם היום.
Source:
https://www.datacamp.com/tutorial/sql-pivot-rows-to-columns