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

64 lines
1.4 KiB
SQL

# name: test/sql/pivot/pivot_prepare.test
# description: Test preparing pivot statements
# group: [pivot]
statement ok
CREATE OR REPLACE TABLE monthly_sales(empid INT, amount INT, month TEXT);
statement ok
INSERT INTO monthly_sales VALUES
(1, 10000, '1-JAN'),
(1, 400, '1-JAN'),
(2, 4500, '1-JAN'),
(2, 35000, '1-JAN'),
(1, 5000, '2-FEB'),
(1, 3000, '2-FEB'),
(2, 200, '2-FEB'),
(2, 90500, '2-FEB'),
(1, 6000, '3-MAR'),
(1, 5000, '3-MAR'),
(2, 2500, '3-MAR'),
(2, 9500, '3-MAR'),
(1, 8000, '4-APR'),
(1, 10000, '4-APR'),
(2, 800, '4-APR'),
(2, 4500, '4-APR');
statement ok
PREPARE v1 AS SELECT *
FROM monthly_sales
PIVOT(SUM(amount + ?) FOR MONTH IN ('1-JAN', '2-FEB', '3-MAR', '4-APR'))
AS p
ORDER BY EMPID;
query IIIII
EXECUTE v1(0)
----
1 10400 8000 11000 18000
2 39500 90700 12000 5300
# expressions in pivot
query IIIII
EXECUTE v1(1)
----
1 10402 8002 11002 18002
2 39502 90702 12002 5302
# prepare top-level pivot stmt
statement ok
PREPARE v2 AS
PIVOT monthly_sales ON MONTH USING SUM(AMOUNT + ?)
query IIIII rowsort
EXECUTE v2(1)
----
1 10402 8002 11002 18002
2 39502 90702 12002 5302
# parameters within subquery of top-level pivot statement not supported
statement error
PREPARE v3 AS
PIVOT (SELECT empid, amount + ? AS amount, month FROM monthly_sales) ON MONTH USING SUM(AMOUNT)
----
cannot have parameters in their source