You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据table_b的列匹配规则计算table_a对应列的求和值?

根据配置表动态计算行内列求和

数据表说明

table_a(业务数据表)

idcf_acf_bcf_cpv_a
11123
22234
33345
44456

table_b(规则配置表)

colsum_cfsum_pv
acf_a, cf_b, cf_cpv_a

预期输出

idsum_cfsum_pv
143
274
3105
4136

解决方案

由于sum_cf是存储在配置表中的动态列名列表,需要通过动态SQL实现需求,以下是主流数据库的实现示例:

MySQL 实现

SET @sum_cf = (SELECT sum_cf FROM table_b WHERE col = 'a');
SET @sum_pv = (SELECT sum_pv FROM table_b WHERE col = 'a');
SET @sql = CONCAT(
    'SELECT id, ', 
    REPLACE(@sum_cf, ', ', ' + '), ' AS sum_cf, ',
    @sum_pv, ' AS sum_pv ',
    'FROM table_a'
);

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

PostgreSQL 实现

DO $$
DECLARE
    sum_cf text;
    sum_pv text;
    sql_query text;
BEGIN
    SELECT sum_cf, sum_pv INTO sum_cf, sum_pv FROM table_b WHERE col = 'a';
    sql_query := 'SELECT id, ' || replace(sum_cf, ', ', ' + ') || ' AS sum_cf, ' || sum_pv || ' AS sum_pv FROM table_a';
    EXECUTE sql_query;
END $$;

逻辑说明

  1. 从配置表table_b中读取目标列名列表sum_cf和PV列名sum_pv
  2. 将逗号分隔的列名转换为列1 + 列2 + 列3的求和表达式
  3. 拼接完整查询语句并执行动态SQL

内容的提问来源于stack exchange,提问作者jeyong kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:41:23