סיכום
מאמר זה מתאר כיצד לסובב טבלת SQL Server. נניח שיש לך טבלה בשם QTRSALES. הטבלה כוללת את העמודות שנה, רבעון וכמות עם הנתונים בתבנית הבאה (שים לב שאין שורה עבור הרבעון הרביעי של 1996): Year Quarter Amount ------------------------------- 1995 1 125,000.90 1995 2 136,000.75 1995 3 212,000.34 1995 4 328,000.82 1996 3 728,000.35 1996 2 422,000.13 1996 1 328,000.82 כעת, נניח שברצונך לסובב את הטבלה כך שתוכל לראות את הנתונים בתבנית הבאה: YEAR Q1 Q2 Q3 Q4 ------------------------------------------------------------------- 1995 125,000.90 136,000.75 212,000.34 328,000.82 1996 328,000.82 422,000.13 728,000.35 0.00 השאילתה שבה תשתמש כדי לסובב את הטבלה נמצאת בסעיף הבא במאמר זה.
שאילתת לדוגמה לסיבוב הטבלה
להלן השאילתה שבה ברצונך להשתמש כדי לסובב את הטבלה:
SELECT YEAR, Q1= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 1 AND YEAR = Q.YEAR),0), Q2= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 2 AND YEAR = Q.YEAR),0), Q3= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 3 AND YEAR = Q.YEAR),0), Q4= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 4 AND YEAR = Q.YEAR),0) FROM QTRSALES Q GROUP BY YEAR
שאילתה עבור טבלאות גדולות
עבור טבלאות גדולות, שאילתה זו תהיה מהירה יותר:
year=q.year,SUM(CASE quarter WHEN 1 THEN amount ELSE 0 END) as Q1,SUM(CASE quarter WHEN 2 THEN amount ELSE 0 END) as Q2,SUM(CASE quarter WHEN 3 THEN amount ELSE 0 END) as Q3,SUM(CASE quarter WHEN 4 THEN amount ELSE 0 END) as Q4FROM qtrsales qGROUP BY year