2016-11-28 54 views
0

我有一个关于下列情况下的SQL最佳实践的问题。 我有一个选择SQL查询(在SQL脚本计算视图内),它可以即时计算一些列。 它看起来像(我提供了一个简化的代码只是为了说明问题):HANA 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语句生成的列是不可能的。我有几个依赖这样的,不希望有这样一个深度嵌套查询:

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多级嵌套查询的方法吗?我会很感激任何意见。在此先感谢

回答

0

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