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

如何将两个无关SQL表的查询结果列相乘得到新列?

无关联表列相乘的SQL实现方案

交叉连接完全可行,只要确保从ODS.PS_RT_RATE_TBL获取的svb_rate是单一行(毕竟是对应CURRENT_DATE的汇率,通常只会有一条记录),就能得到预期结果。

方法1:子查询嵌套写法

SELECT 
    f.PRINCIPAL_BAL_NET,
    r.svb_rate,
    f.PRINCIPAL_BAL_NET * r.svb_rate AS calculated_amount
FROM 
    FRDS_LOANS_MV f
CROSS JOIN 
    (SELECT svb_rate 
     FROM ODS.PS_RT_RATE_TBL 
     -- 替换date_column为表中实际存储日期的列名
     WHERE date_column = CURRENT_DATE) r;

方法2:CTE(公共表表达式)写法(更易读)

WITH daily_rate AS (
    SELECT svb_rate 
    FROM ODS.PS_RT_RATE_TBL 
    -- 替换date_column为表中实际存储日期的列名
    WHERE date_column = CURRENT_DATE
)
SELECT 
    f.PRINCIPAL_BAL_NET,
    dr.svb_rate,
    f.PRINCIPAL_BAL_NET * dr.svb_rate AS calculated_amount
FROM 
    FRDS_LOANS_MV f
CROSS JOIN 
    daily_rate dr;

注意事项

如果ODS.PS_RT_RATE_TBL中CURRENT_DATE对应的svb_rate有多行记录,交叉连接会产生笛卡尔积(结果行数=贷款表行数×汇率表匹配行数),这大概率不符合业务需求。这种情况下,需要先确保子查询/CTE只返回一行数据,比如:

-- 示例:取最新的汇率
SELECT svb_rate 
FROM ODS.PS_RT_RATE_TBL 
WHERE date_column = CURRENT_DATE
ORDER BY update_time DESC -- 假设存在更新时间列
LIMIT 1;

-- 或者用聚合函数(按业务逻辑选择MAX/MIN/AVG等)
SELECT MAX(svb_rate) AS svb_rate 
FROM ODS.PS_RT_RATE_TBL 
WHERE date_column = CURRENT_DATE;

内容的提问来源于stack exchange,提问作者Pavan Vasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:00:56