210 lines
3.6 KiB
SQL
210 lines
3.6 KiB
SQL
# name: test/sql/pivot/pivot_6390.test
|
|
# description: Test #6390: PIVOT with CTE
|
|
# group: [pivot]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
statement ok
|
|
CREATE TABLE cpb_tbl AS
|
|
WITH CPB(CPDH,NF,JG) AS (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
) FROM CPB;
|
|
|
|
|
|
query IIIII rowsort pivot
|
|
pivot cpb_tbl on nf using sum(jg)group by cpdh
|
|
----
|
|
|
|
query IIIII rowsort pivot
|
|
WITH CPB(CPDH,NF,JG) AS (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
pivot CPB on nf IN (2010, 2017, 2018, 2022) using sum(jg)group by cpdh
|
|
----
|
|
|
|
query IIIII rowsort pivot
|
|
WITH CPB(CPDH,NF,JG) AS (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
pivot CPB on nf using sum(jg)group by cpdh
|
|
----
|
|
|
|
query IIIII rowsort pivot
|
|
WITH CPB(CPDH,NF,JG) AS (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
SELECT *
|
|
FROM (pivot CPB on nf using sum(jg)group by cpdh)
|
|
----
|
|
|
|
query IIIII rowsort pivot
|
|
WITH CPB(CPDH,NF,JG) AS (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
from CPB pivot (sum(jg) for nf in (2010, 2017, 2018, 2022) group by cpdh)
|
|
----
|
|
|
|
require no_alternative_verify
|
|
|
|
# nested CTEs with overlapping names
|
|
query IIIII rowsort pivot
|
|
WITH CPB AS (SELECT 42)
|
|
SELECT *
|
|
FROM (
|
|
WITH CPB(CPDH,NF,JG) AS (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
pivot CPB on nf using sum(jg) group by cpdh)
|
|
----
|
|
|
|
query IIIII rowsort pivot
|
|
WITH CPB(CPDH,NF,JG) AS MATERIALIZED (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
pivot CPB on nf IN (2010, 2017, 2018, 2022) using sum(jg)group by cpdh
|
|
----
|
|
|
|
query IIIII rowsort pivot
|
|
WITH CPB(CPDH,NF,JG) AS MATERIALIZED (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
pivot CPB on nf using sum(jg)group by cpdh
|
|
----
|
|
|
|
query IIIII rowsort pivot
|
|
WITH CPB(CPDH,NF,JG) AS MATERIALIZED (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
SELECT *
|
|
FROM (pivot CPB on nf using sum(jg)group by cpdh)
|
|
----
|
|
|
|
query IIIII rowsort pivot
|
|
WITH CPB(CPDH,NF,JG) AS MATERIALIZED (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
from CPB pivot (sum(jg) for nf in (2010, 2017, 2018, 2022) group by cpdh)
|
|
----
|
|
|
|
# nested CTEs with overlapping names
|
|
query IIIII rowsort pivot
|
|
WITH CPB AS (SELECT 42)
|
|
SELECT *
|
|
FROM (
|
|
WITH CPB(CPDH,NF,JG) AS MATERIALIZED (
|
|
SELECT 'C1',2022,10
|
|
UNION ALL
|
|
SELECT 'C1',2018,20
|
|
UNION ALL
|
|
SELECT 'C1',2017,0
|
|
UNION ALL
|
|
SELECT 'C2',2022,10
|
|
UNION ALL
|
|
SELECT 'C2',2010,30
|
|
UNION ALL
|
|
SELECT 'C3',2010,80
|
|
)
|
|
pivot CPB on nf using sum(jg) group by cpdh)
|
|
----
|