วิธีการหมุนตารางใน SQL Server


สรุป


บทความนี้จะอธิบายวิธีการหมุนตาราง SQL Server สมมติว่าคุณมีตารางที่ชื่อQTRSALES ตารางมีคอลัมน์ปีไตรมาสและจำนวนที่มีข้อมูลในรูปแบบต่อไปนี้ (โปรดสังเกตว่าไม่มีแถวสำหรับไตรมาสที่สี่ของ๑๙๙๖):
   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