簡體   English   中英

Pivot 雪花中的多列

[英]Pivot Multiple Columns in Snowflake

無法 pivot 雪花中的多列。

這有效:

--DROP TABLE "PUBLIC".MONTHLY_SALES
create or replace table monthly_sales(empid int, amount int, month text)
    as select * from 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');
    
   
 SELECT * FROM monthly_sales
 pivot(
        sum(amount)
        for month in ('JAN', 'FEB', 'MAR', 'APR')
        ) AS p;
 

但我在添加額外的聚合時收到錯誤

SELECT * FROM monthly_sales
 pivot(
        sum(amount)
        , count(amount)
        for month in ('JAN', 'FEB', 'MAR', 'APR')
        ) AS p;

QL 錯誤 [1003] [42000]:SQL 編譯錯誤:position 5 意外“,”處的語法錯誤第 4 行。 position 處的語法錯誤第 4 行 12 意外'('。position 處的語法錯誤行 5 45 意外')'。

任何指導表示贊賞

Felipe 是對的, PIVOT中只能使用一種聚合

但是根據您要實現的目標,此查詢可能會有所幫助。

SELECT 'SUM' RECORD_TYPE, * FROM (SELECT * FROM monthly_sales
 pivot(
        SUM(amount) 
        for month in ('JAN', 'FEB', 'MAR', 'APR')
        ) AS p)
UNION ALL
SELECT 'COUNT', * FROM (SELECT * FROM monthly_sales
 pivot(
        count(amount) 
        for month in ('JAN', 'FEB', 'MAR', 'APR')
        ) AS p)

Output:

Row RECORD_TYPE EMPID   'JAN'     'FEB'   'MAR'  'APR'
1     SUM           1   10400      8000   11000  18000
2     SUM           2   39500     90700   12000   5300
3     COUNT         1       2         2       2      2
4     COUNT         2       2         2       2      2

根據 Snowflake 中PIVOT的文檔,只能得到一個聚合:

SELECT ...
FROM ...
   PIVOT ( <aggregate_function> ( <pivot_column> )
            FOR <value_column> IN ( <pivot_value_1> [ , <pivot_value_2> ... ] ) )

[ ... ]

如果您使用示例輸入和 output 發布不同的問題,我們可以嘗試為此制定解決方案。

至於這個問題,我不知道如何在關系表中表示兩個不同的聚合。 但至少我們可以回答為什么會出現語法錯誤: PIVOT不支持多個聚合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM