我似乎无法让pivot在SQL Snowflake中工作
所以我不知道如何让桌子在雪花中旋转。我试图在这里建立帮助页面的模型 在这个例子中,我只拉了3列,步骤,被测量的参数和值。尝试旋转它,使每个参数都位于自己的列中 源输出我似乎无法让pivot在SQL Snowflake中工作,sql,pivot,aggregate-functions,snowflake-cloud-data-platform,snowflake-schema,Sql,Pivot,Aggregate Functions,Snowflake Cloud Data Platform,Snowflake Schema,所以我不知道如何让桌子在雪花中旋转。我试图在这里建立帮助页面的模型 在这个例子中,我只拉了3列,步骤,被测量的参数和值。尝试旋转它,使每个参数都位于自己的列中 源输出 step_name Parameter_Name Value ---------------------------------- A Item1 75 A Item2 32 B Item1 45 B
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
只需使用条件聚合。该语法适用于大多数数据库,不需要记住每个特定于供应商的实现的细微变化。它也更灵活(尽管这对这个简单的用例没有什么区别):
在缺少
order by
子句的情况下,我从查询中删除了limit
子句:如果您想要一个稳定的行子集,那么使用order by
和limit
使用雪花语法,下面的SQL给出了输出
Select *
FROM METRO_TABLE
PIVOT(sum(value) for parameter_name in ('Item1','Item2'))
AS P (Step_Name,Item_1,Item_2)
ORDER BY step_name;
令人惊叹的!这就行了。所以下一个问题,添加更多的列似乎会抛出一个错误。我将如何在更大的查询中使用它?例如,拉动Lot_ID列,其他标识列?SQL编译错误:select子句中位置4“metro\u table.Lot\u ID”处的错误行2既不是聚合,也不是group by子句中的错误行。@surfer349:注释并非真正用于提出新问题-相反,您可以提供适当的示例数据和所需的结果。也许您只想在
select
和groupby
子句中添加这些列?我编写了一个Snowflake存储过程来获取Snowflake中的动力学轴,请检查
Select *
FROM METRO_TABLE
PIVOT(sum(value) for parameter_name in ('Item1','Item2'))
AS P (Step_Name,Item_1,Item_2)
ORDER BY step_name;