Amazon redshift 需要将偏移值作为expr包含在滞后函数中

Amazon redshift 需要将偏移值作为expr包含在滞后函数中,amazon-redshift,database-migration,snowflake-cloud-data-platform,Amazon Redshift,Database Migration,Snowflake Cloud Data Platform,我正在将红移SQL迁移到雪花SQL。 需要关于如何将偏移值作为表达式包含在snowflake的LAG()中的建议。关于偏移量,红移支持LAG()中的表达式,而雪花则不支持 例如: SF中应为sql: LAG(exp, **exp**) over (partition by col1 order by col2) 当前不支持LAG函数第二个输入参数的表达式。如果使用pass A表达式,您将收到如下所示的错误 错误:SQL编译错误:函数LAG的参数2需要为常量,找到“EXPR”-其中EXPR是一个

我正在将红移SQL迁移到雪花SQL。 需要关于如何将偏移值作为表达式包含在snowflake的LAG()中的建议。关于偏移量,红移支持LAG()中的表达式,而雪花则不支持

例如: SF中应为sql:

LAG(exp, **exp**) over (partition by col1 order by col2)

当前不支持LAG函数第二个输入参数的表达式。如果使用pass A表达式,您将收到如下所示的错误

错误:SQL编译错误:函数LAG的参数2需要为常量,找到“EXPR”-其中EXPR是一个表达式

在LAG()函数的第二个参数中支持表达式的改进请求正在处理中

解决方法
您可以通过将行号()添加到表中并进行自联接来重写LAG函数。

LAG(exp,exp)OVER()
一开始就没有意义。请提供一个最小的可重复性示例,演示您正在尝试做的事情。我可以看到使用case语句在LAG()函数中派生偏移量,因此我认为这是有意义的。