所以我不知道如何让表在 Snowflake 中旋转。我正在尝试为此处的帮助页面建模 https://docs.snowflake.com/en/sql-reference/constructs/pivot.html .
在这个例子中,我只提取了 3 列,即步骤、被测量的参数和值。尝试调整它以便每个参数都在其自己的列中。
源输出
step_name Parameter_Name Value
----------------------------------
A Item1 75
A Item2 32
B Item1 45
B Item2 62
枢轴输出
step_name Item1 Item2
--------------------------
A 75 32
B 45 62
sql 文本:
select
step_name,
PARAMETER_NAME,
Value
from "METRO_TABLE"
pivot (avg(Value) for PARAMETER_NAME in ('Item1', 'Item2'))
as p
WHERE
and PARAMETER_NAME in ('Item1','Item2')
limit 50
最佳答案
只需使用条件聚合。该语法适用于大多数数据库,并且不需要记住每个供应商特定实现的微小变化。它也更灵活(尽管这对这个简单的用例没有影响):
select
step_name,
max(case when parameter_name = 'Item1' then value end) Item1,
max(case when parameter_name = 'Item2' then value end) Item2
from metro_table
where parameter_name in ('Item1', 'Item2')
group by step_name
在没有 order by
子句的情况下,我从您的查询中删除了 limit
子句:如果您想要一个稳定行子集,然后使用两者 order by
和limit
。
关于sql - 我似乎无法在 SQL Snowflake 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63588450/