在以下情况中,我对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中的多级嵌套查询,有没有办法解决这个问题?我很感激任何建议。提前致谢
答案 0 :(得分:0)
此处的一个选项可能是在SAP HANA中使用决策表。 或者,您可以考虑使用投影节点中的相应计算构建图形计算视图。 在“纯”SQL中,除了嵌套列定义之外,没有太多可以做的。