HANA SQL

时间:2016-11-28 10:00:17

标签: sql hana

在以下情况中,我对SQL最佳做法有疑问。 我有一个选择SQL查询(在SQL脚本计算视图中),它可以动态计算一些列。 它看起来像(我提供了一个简化的代码来表明问题):

SELECT  ... ,
        "COL1" ,
        "COL2" * "COL3" AS "COL4" ,
        CASE WHEN "COL4" > "COL1" THEN sth
             ELSE sth2
        END AS "COL5" ,
        CASE WHEN "COL5" > sthelse THEN sthelse2
             ELSE sthelse3
        END AS "COL6"
FROM    ...

由于错误“无效列名”,上述代码无效。我知道在另一个case表达式中使用case语句生成的列是不可能的。我有几个这样的依赖,并且不希望有一个深层嵌套的查询,如:

SELECT  ...
FROM    ( SELECT    * ,
                    CASE WHEN "COL5" > sthelse THEN sthelse2
                         ELSE sthelse3
                    END AS "COL6"
          FROM      ( SELECT    * ,
                                CASE WHEN "COL4" > "COL1" THEN sth
                                     ELSE sth2
                                END AS "COL5"
                      FROM      (...

如果没有SAP HANA中的多级嵌套查询,有没有办法解决这个问题?我很感激任何建议。提前致谢

1 个答案:

答案 0 :(得分:0)

此处的一个选项可能是在SAP HANA中使用决策表。 或者,您可以考虑使用投影节点中的相应计算构建图形计算视图。 在“纯”SQL中,除了嵌套列定义之外,没有太多可以做的。