我似乎无法让pivot在SQL Snowflake中工作

我似乎无法让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

所以我不知道如何让桌子在雪花中旋转。我试图在这里建立帮助页面的模型

在这个例子中,我只拉了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 

只需使用条件聚合。该语法适用于大多数数据库,不需要记住每个特定于供应商的实现的细微变化。它也更灵活(尽管这对这个简单的用例没有什么区别):


在缺少
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;