64 lines
1.4 KiB
SQL
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
|