Files
email-tracker/external/duckdb/test/sql/pivot/test_multi_pivot.test
2025-10-24 19:21:19 -05:00

73 lines
1.8 KiB
SQL

# name: test/sql/pivot/test_multi_pivot.test
# description: Test pivoting over multiple dimensions
# group: [pivot]
statement ok
PRAGMA enable_verification
statement ok
CREATE OR REPLACE TABLE sales(empid INT, amount INT, month TEXT, year INT);
statement ok
INSERT INTO sales VALUES
(1, 10000, 'JAN', 2020),
(1, 400, 'JAN', 2021),
(2, 4500, 'JAN', 2021),
(2, 35000, 'JAN', 2020),
(1, 5000, 'FEB', 2020),
(1, 3000, 'FEB', 2021),
(2, 200, 'FEB', 2021),
(2, 90500, 'FEB', 2020),
(1, 6000, 'MAR', 2021),
(1, 5000, 'MAR', 2021),
(2, 2500, 'MAR', 2021),
(2, 9500, 'MAR', 2021),
(1, 8000, 'APR', 2020),
(1, 10000, 'APR', 2020),
(2, 800, 'APR', 2021),
(2, 4500, 'APR', 2020);
query IIIIIIIII
SELECT *
FROM sales
PIVOT(
SUM(amount)
FOR YEAR IN (2020, 2021)
MONTH IN ('JAN', 'FEB', 'MAR', 'APR')
) AS p
ORDER BY EMPID;
----
1 10000 5000 NULL 18000 400 3000 11000 NULL
2 35000 90500 NULL 4500 4500 200 12000 800
query IIIIIIIII
SELECT *
FROM sales
PIVOT(
SUM(amount + year)
FOR YEAR IN (2020, 2021)
MONTH IN ('JAN', 'FEB', 'MAR', 'APR')
) AS p
ORDER BY EMPID;
----
1 12020 7020 NULL 22040 2421 5021 15042 NULL
2 37020 92520 NULL 6520 6521 2221 16042 2821
statement ok
SET pivot_limit=10000
# too many pivots
statement error
SELECT *
FROM sales
PIVOT(
SUM(amount)
FOR YEAR IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
MONTH IN ('JAN', 'FEB', 'MAR', 'APR')
amount IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
empid IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
) AS p
ORDER BY EMPID;
----
Pivot column limit of 10000 exceeded