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

67 lines
1.4 KiB
SQL

# name: test/sql/pivot/pivot_enum.test
# description: Test SQL pivot syntax using an enum instead of an IN list
# group: [pivot]
statement ok
PRAGMA enable_verification
# pivot using an enum
statement ok
CREATE OR REPLACE TABLE monthly_sales(empid INT, amount INT, month TEXT);
statement ok
INSERT INTO monthly_sales VALUES
(1, 10000, 'JAN'),
(1, 400, 'JAN'),
(2, 4500, 'JAN'),
(2, 35000, 'JAN'),
(1, 5000, 'FEB'),
(1, 3000, 'FEB'),
(2, 200, 'FEB'),
(2, 90500, 'FEB'),
(1, 6000, 'MAR'),
(1, 5000, 'MAR'),
(2, 2500, 'MAR'),
(2, 9500, 'MAR'),
(1, 8000, 'APR'),
(1, 10000, 'APR'),
(2, 800, 'APR'),
(2, 4500, 'APR');
statement ok
CREATE TYPE unique_months AS ENUM (SELECT DISTINCT month FROM monthly_sales ORDER BY
CASE month WHEN 'JAN' THEN 1 WHEN 'FEB' THEN 2 WHEN 'MAR' THEN 3 ELSE 4 END);
query IIIII
SELECT *
FROM monthly_sales
PIVOT(SUM(amount) FOR MONTH IN unique_months)
AS p
ORDER BY EMPID;
----
1 10400 8000 11000 18000
2 39500 90700 12000 5300
# enum does not exist
statement error
SELECT *
FROM monthly_sales
PIVOT(SUM(amount) FOR MONTH IN unique_monthsx)
AS p
ORDER BY EMPID;
----
unique_monthsx
statement ok
CREATE TYPE not_an_enum AS VARCHAR;
# enum does not exist
statement error
SELECT *
FROM monthly_sales
PIVOT(SUM(amount) FOR MONTH IN not_an_enum)
AS p
ORDER BY EMPID;
----
Pivot must reference an ENUM type