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

SQL存储过程中dcOverTimeSummary表与别名D2的关联关系是什么?

问题解答

1. dcOverTimeSummary 与别名 D2 的关系

  • 外层主查询的查询对象是dcOverTimeSummary表,子查询中的别名D2是同一张dcOverTimeSummary表的二次引用,二者通过REASON_CODE、UNF_CIV_IND、Cash_Time_Ind三个维度字段关联匹配,用于计算当前分组对应的去年同期加班费、加班时长指标。

2. 是否为未使用JOIN关键字的自连接

  • 不是,该写法属于关联子查询(Correlated Subquery),和传统自连接的核心区别如下:
    • 传统自连接会在FROM子句中声明两次同表的关联关系,通过JOIN关键字(或老式的逗号隐式连接)定义关联条件
    • 本写法将D2的查询逻辑放在SELECT字段列表中,会逐行匹配外层主查询当前行的维度值,筛选去年同期数据做聚合,逻辑上等价于LEFT JOIN自连接,但语法归类属于子查询范畴。

可选优化建议

现有写法存在两处可优化点:

  1. 重复写了两次完全相同的关联子查询,性能损耗更高,可改写为LEFT JOIN自连接+分组聚合的写法,仅计算一次去年同期数据即可
  2. 日期比较前用FORMAT转字符串的写法存在性能问题、也有格式适配风险,可直接用日期类型比较:D2.Earned_Date >= DATEADD(year, -1, @EarnedDate_frm) AND D2.Earned_Date <= DATEADD(year, -1, @EarnedDate_to)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:06:03