我们具有以下格式的数据作为输出;列是日期,同类群组名称和费率。请忽略其余列;
Date Group_nm Rate
2019-10-08 A 0.43
2019-10-09 A 0.46
2019-10-08 B 1.5
2019-10-09 B 2
目标是使它以以下格式显示;
Group_nm 2019-10-08 2019-10-09
A 0.43 0.46
B 1.5 2
这是我的尝试;
SELECT * FROM
(SELECT
date, group_nm, rate
FROM CTE1
)
AS StudentTable
PIVOT(MAX(rate)
FOR date IN ('2019-10-08','2019-10-09')
) AS StudentPivotTable;
但是我遇到一个错误; “无效的标识符率”。请注意,此处不需要汇总,因为数据透视始终要求汇总,因此出于完整性考虑,我们只给出了 MAX()。感谢您的帮助。
答案 0 :(得分:3)
尝试使用CTE而不是该子选择。我已经使用CTE显式加载您的值,但是您可以在实际CTE中运行从CTE1中选择的内容:
WITH x as (
SELECT $1::date as date_fld, $2 as group_nm, $3 as rate
FROM (VALUES
('2019-10-08','A',0.43),('2019-10-09','A',0.46),('2019-10-08','B',1.5),('2019-10-09','B',2)
)
)
SELECT * FROM x
PIVOT(max(rate) for date_fld in ('2019-10-08'::date,'2019-10-09'::date)) as p;
此外,文档示例也非常有用:https://docs.snowflake.net/manuals/sql-reference/constructs/pivot.html