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

Oracle SQL转Databricks SQL Unity Catalog:标量子查询连接改写

正确的Databricks SQL转换方案

方法1:CTE + 窗口函数实现

先通过CTE给RtxnStatHist表按AcctNbr+RtxnNbr分组,对TIMEUNIQUEEXTN降序排序,筛选出每组中最大时间的记录,再和主表关联:

WITH ranked_rtxn AS (
  SELECT 
    *,
    ROW_NUMBER() OVER (PARTITION BY AcctNbr, RtxnNbr ORDER BY TIMEUNIQUEEXTN DESC) AS rn
  FROM `uc-dev`.iccu_dna.RtxnStatHist
)
SELECT t.*, r.*
FROM 你的主表名 t
JOIN ranked_rtxn r
  ON t.AcctNbr = r.AcctNbr
  AND t.RtxnNbr = r.RtxnNbr
WHERE r.rn = 1;

方法2:子查询替代CTE

如果不习惯CTE,直接用子查询也能实现相同逻辑:

SELECT t.*, r.*
FROM 你的主表名 t
JOIN (
  SELECT 
    *,
    ROW_NUMBER() OVER (PARTITION BY AcctNbr, RtxnNbr ORDER BY TIMEUNIQUEEXTN DESC) AS rn
  FROM `uc-dev`.iccu_dna.RtxnStatHist
) r
  ON t.AcctNbr = r.AcctNbr
  AND t.RtxnNbr = r.RtxnNbr
WHERE r.rn = 1;

关键说明

  • 若AcctNbr+RtxnNbr+TIMEUNIQUEEXTN存在重复的最大值记录,想保留所有匹配项,可将ROW_NUMBER()替换为RANK()或DENSE_RANK()
  • 记得把代码中的你的主表名替换成实际要关联的表名
  • 这种写法完全适配Databricks SQL语法,规避了标量子查询作为连接条件的限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:42:32