# name: test/sql/pivot/pivot_bigquery.test # description: Tests from the bigquery docs # group: [pivot] # https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#pivot_operator # https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#unpivot_operator # pivot statement ok PRAGMA enable_verification statement ok CREATE TABLE Produce AS SELECT 'Kale' as product, 51 as sales, 'Q1' as quarter, 2020 as year UNION ALL SELECT 'Kale', 23, 'Q2', 2020 UNION ALL SELECT 'Kale', 45, 'Q3', 2020 UNION ALL SELECT 'Kale', 3, 'Q4', 2020 UNION ALL SELECT 'Kale', 70, 'Q1', 2021 UNION ALL SELECT 'Kale', 85, 'Q2', 2021 UNION ALL SELECT 'Apple', 77, 'Q1', 2020 UNION ALL SELECT 'Apple', 0, 'Q2', 2020 UNION ALL SELECT 'Apple', 1, 'Q1', 2021 query IIIIII SELECT * FROM Produce PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4')) ORDER BY ALL ---- Apple 2020 77 0 NULL NULL Apple 2021 1 NULL NULL NULL Kale 2020 51 23 45 3 Kale 2021 70 85 NULL NULL query IIIII SELECT * FROM (SELECT product, sales, quarter FROM Produce) PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4')) ORDER BY ALL ---- Apple 78 0 NULL NULL Kale 121 108 45 3 query IIII SELECT * FROM (SELECT product, sales, quarter FROM Produce) PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3')) ORDER BY ALL ---- Apple 78 0 NULL Kale 121 108 45 query III SELECT * FROM (SELECT sales, quarter FROM Produce) PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3')) ORDER BY ALL ---- 199 108 45 query IIIII SELECT * FROM (SELECT product, sales, quarter FROM Produce) PIVOT(SUM(sales) total_sales, COUNT(*) num_records FOR quarter IN ('Q1', 'Q2')) ORDER BY ALL ---- Apple 78 2 0 1 Kale 121 2 108 2 statement ok CREATE OR REPLACE TABLE Produce AS SELECT 'Kale' as product, 51 as Q1, 23 as Q2, 45 as Q3, 3 as Q4 UNION ALL SELECT 'Apple', 77, 0, 25, 2 query III SELECT * FROM Produce UNPIVOT(sales FOR quarter IN (Q1, Q2, Q3, Q4)) ORDER BY ALL ---- Apple Q1 77 Apple Q2 0 Apple Q3 25 Apple Q4 2 Kale Q1 51 Kale Q2 23 Kale Q3 45 Kale Q4 3 query IIII SELECT product, first_half_sales, second_half_sales, semesters FROM Produce UNPIVOT( (first_half_sales, second_half_sales) FOR semesters IN ((Q1, Q2) AS 'semester_1', (Q3, Q4) AS 'semester_2')) ---- Kale 51 23 semester_1 Kale 45 3 semester_2 Apple 77 0 semester_1 Apple 25 2 semester_2