有一个表包含公式中使用的值。有一些简单变量,不包含任何表达式,也有一些变量从简单变量组合成公式。我需要弄清楚是否可以执行SELECT查询,以基于包含的别名获得可读公式。这些别名中的每一个都可以用于其他公式。
假设有两个表:
项目表
| 识别号|姓名|配方ID|
| - ------|- ------|- ------|
| 1个|项目名称1|第三代|
| 第二章|项目名称2|第二十六次|
配方表
| 识别号|表达|阿利酶|姓名|
| - ------|- ------|- ------|- ------|
| 第一代|零|变量_100|机票|
| f_2|零|变量_200|金额|
| 第三代|变量100 * 变量200|变量_300|一些描述|
那么是否有机会进行查询,结果如下:
| 项目名称|可读_表达|
| - ------|- ------|
| 项目名称1|机票 * 金额|
5条答案
按热度按时间ccgok5k51#
试试这个:
请注意,它还远远不能完全抵御所有情况,特别是别名中的递归。
icnyk63a2#
另一组数据的一些改善:
s8vozzvw3#
将以空格分隔的公式拆分为行。将表达式部分联接到别名,并用名称替换别名。使用LISTAGG将此表达式联接到item_table,以将行重新连接为单个列。
wlp8pajw4#
1.使用示例数据创建CTE(calc_data)用于建模
1.* * 带MODEL子句的主SQL**
结果:
| 项目名称|配方|
| - ------| - ------|
| 项目名称1|金额 * 机票|
只是作为一个选项...
没有任何分析函数、伪列、联合等,结果都是一样的--只是一遍又一遍地选择。虽然不可读...... *
kgsdhlau5#
谢谢大家的回答!
我决定创建一个pl/sql函数,只是为了将一个公式修改为可读行。所以这个函数只是使用regex查找变量,并使用索引将每个变量替换为一个名称。
因此,这样的函数返回1个结果行,其中1个输入行的值被替换为FORMULA。您所需要做的就是在SELECT中连接ITEM和FORMULA表。
请注意,这些表格是虚构的,不会显示实际的数据结构,因此可能会有一些不准确之处,但总体思路应该是清晰的。