【问题标题】:Snowflake View nested calculation雪花视图嵌套计算
【发布时间】:2021-05-27 20:02:18
【问题描述】:

我必须通过从 7-​​8 个表中获取数据来构建一个视图,然后有一些字段是从其他计算字段中计算出来的。例如第一个计算是 if(indicator=‘H’, amount*20, amount) as deliAmt。进而 if(isnull(deliAmt),0 else deliAmt)

这只是一个例子,但对于这个视图,我需要 5-6 次这样的计算。

此外,最终视图还有大约 7-8 个主表和其他用于这些计算的获取列的表。最终将有 57 列。

请指导实现这一点的最佳方法是什么。

【问题讨论】:

    标签: sql view snowflake-cloud-data-platform


    【解决方案1】:

    要编写一个从 7-8 表中选择数据的视图,请编写从 7-8 表中选择的 SQL 并将其放在“视图中”。

    但是你的另一部分问题是如何执行类似 IF 的逻辑是在 Snowflake 中使用 IFF 运算符,因此你的示例是 if(indicator=‘H’, amount*20, amount) as deliAmt

    会写

    IFF(indicator=‘H’, amount*20, amount) as deliAmt
    

    If(isnull(deliAmt),0 else deliAmt) 将是:

    IFF(isnull(deliAmt), 0, deliAmt)
    

    其中也可以通过ZEROIFNULL 来完成,例如:

    ZEROIFNULL(deliAmt)
    

    【讨论】:

    • 嘿,谢谢您的回答,所以我知道这是我的查询应该采用的方式?选择 t1.a,t2.b,t3.a, ZEROIFNULL(IFF(indicator='H', amount*20, amount)) as Final_Amount from table1 t1 left outer join .......... …………我理解正确了吗?
    • @user16052342 是的,这似乎是正确的。也就是说,是的,这就是您将如何执行ZEROIFNULL,并且我认为连接部分是正确的。
    猜你喜欢
    • 2022-08-19
    • 2022-01-24
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多