【发布时间】:2021-01-28 17:34:49
【问题描述】:
我有两张桌子。我需要根据配置表列形成一个比率。由于 100 只有 PROFIT 和 LOSS 列的比率将是 PROFIT:LOSS。这需要动态 SQL。
我试着写,但我不知道如何继续。你能建议一下吗?
配置表:
表格 - A100
输出:我需要根据表1和表2形成一个比例
我试过的查询:
WITH col as (SELECT COLUMN_NAME
FROM config
WHERE TABLE_NAME='A100'
) ,
fetch_col as ( SELECT DISTINCT CUSTOMER,COLUMN_NAME,SALES,PROFIT,LOSS,DIVIDEND
FROM A100 CROSS JOIN dba_tab_columns
WHERE COLUM_NAME IN (SELECT COLUMN_NAME FROM col)
)
SELECT CUSTOMER,PROFI||':'||LOSS
CASE WHEN a.COLUMN_NAME=b.COLUMN_NAME THEN PROFIT||':'||LOSS ELSE '' END
FROM fetch_col a INNER JOIN col b
ON a.COLUMN_NAME=b.COLUMN_NAME
【问题讨论】:
-
我看不出表 1 与此有什么关系。
-
我需要读取表 1 以检查要使用哪些列来形成比率,然后读取表 2 以形成基于它的比率
-
所以您的配置表将始终有 2 个表值 - A100?由于口粮仅包含 2 个值。为什么你使用了 distinct?
-
是 DISTINCT 不需要,现在更新。它只有两个值
-
你怎么知道它应该是 'PROFIT:LOSS' 而不是 'LOSS:PROFIT' - 配置表是否有另一列指示订单?并且“由于 100 仅...”是否意味着某些表在配置表中的列将超过两列;如果是这样,您期望会发生什么?或者...您是否专门在配置表中寻找利润和损失,而忽略其他所有内容?目前尚不清楚您是否正在查看配置以获取列名;或只寻找固定名称。