55 lines
1.6 KiB
SQL
55 lines
1.6 KiB
SQL
# name: test/sql/pivot/pivot_subquery.test
|
|
# description: Test pivot over subquery
|
|
# group: [pivot]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
# pivot using an enum
|
|
statement ok
|
|
CREATE OR REPLACE TABLE sales(empid INT, amount INT, d DATE);
|
|
|
|
statement ok
|
|
INSERT INTO sales VALUES
|
|
(1, 10000, DATE '2000-01-01'),
|
|
(1, 400, DATE '2000-01-07'),
|
|
(2, 4500, DATE '2001-01-21'),
|
|
(2, 35000, DATE '2001-01-21'),
|
|
(1, 5000, DATE '2000-02-03'),
|
|
(1, 3000, DATE '2000-02-07'),
|
|
(2, 200, DATE '2001-02-05'),
|
|
(2, 90500, DATE '2001-02-19'),
|
|
(1, 6000, DATE '2000-03-01'),
|
|
(1, 5000, DATE '2000-03-09'),
|
|
(2, 2500, DATE '2001-03-03'),
|
|
(2, 9500, DATE '2001-03-08');
|
|
|
|
# PIVOT over a subquery
|
|
query IIIIIII
|
|
PIVOT (SELECT YEAR(d) AS year, MONTH(d) AS month, empid, amount FROM sales) ON YEAR, MONTH USING SUM(AMOUNT) ORDER BY ALL;
|
|
----
|
|
1 10400 8000 11000 NULL NULL NULL
|
|
2 NULL NULL NULL 39500 90700 12000
|
|
|
|
# PIVOT over a PIVOT
|
|
query II
|
|
PIVOT (PIVOT (SELECT YEAR(d) AS year, MONTH(d) AS month, empid, amount FROM sales) ON YEAR, MONTH USING SUM(AMOUNT))
|
|
ON empid USING SUM(COALESCE("2000_1",0) + COALESCE("2000_2",0) + COALESCE("2000_3",0) + COALESCE("2001_1",0) + COALESCE("2001_2",0) + COALESCE("2001_3",0))
|
|
----
|
|
29400 142200
|
|
|
|
statement error
|
|
CREATE VIEW pivot_view AS PIVOT (SELECT YEAR(d) AS year, MONTH(d) AS month, empid, amount FROM sales) ON YEAR, MONTH USING SUM(AMOUNT);
|
|
----
|
|
cannot be used in views
|
|
|
|
statement error
|
|
CREATE MACRO xt2(a) as TABLE PIVOT sales ON d USING SUM(amount)
|
|
----
|
|
cannot be used in macros
|
|
|
|
statement error
|
|
CREATE MACRO xt2(a) as (PIVOT sales ON d USING SUM(amount))
|
|
----
|
|
cannot be used in macros
|