This guide is specifically for SQL Server syntax.
How to SQL Pivot Table Query in SQL
Transform rows to columns using CASE WHEN or PIVOT operator.
Quick Answer
SELECT product, SUM(CASE WHEN month='Jan' THEN sales END) as jan FROM sales GROUP BY product;
Explanation
CASE WHEN inside aggregates creates pivot-like output. SQL Server has native PIVOT syntax. Group by the row identifier column.
Query Variants
Case When
SELECT product, SUM(CASE WHEN quarter = 'Q1' THEN revenue ELSE 0 END) as Q1, SUM(CASE WHEN quarter = 'Q2' THEN revenue ELSE 0 END) as Q2, SUM(CASE WHEN quarter = 'Q3' THEN revenue ELSE 0 END) as Q3, SUM(CASE WHEN quarter = 'Q4' THEN revenue ELSE 0 END) as Q4 FROM sales GROUP BY product;
Sqlserver Pivot
SELECT * FROM (SELECT product, quarter, revenue FROM sales) src PIVOT (SUM(revenue) FOR quarter IN ([Q1], [Q2], [Q3], [Q4])) pvt;
Pro Tips
- CASE WHEN works in all databases
- PIVOT is SQL Server specific
- Dynamic pivots require dynamic SQL
Related SQL Queries
Continue learning with more SQL query examples:
SQL Server-Specific Notes
This page covers SQL Server syntax. Other databases may have different syntax for similar operations.