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

Teradata SQL左连接查询中如何对非聚合参数执行GROUP BY

Teradata SQL GROUP BY子句补全方案

直接补全方案

你当前内层查询块SELECT c.ID FROM table c LEFT JOIN ...中,除了聚合函数SUM(trx)外,仅有的非聚合列是c.ID,因此GROUP BY子句直接填写c.ID即可符合Teradata语法要求。
同时注意你当前代码存在2处语法顺序/缺失问题需要同步修正:

  • 子查询(SELECT ID, COUNT(*) AS trx) as abc缺少来源表,需要补全对应统计的表名,且该子查询本身用到COUNT聚合,也需要加GROUP BY ID
  • Teradata要求语法顺序为WHERE -> GROUP BY -> HAVING -> QUALIFY,你当前写的HAVING在GROUP BY前面,需要调整顺序

修正后完整可运行参考代码

SELECT DISTINCT ID
FROM (
    SELECT *
    FROM (
        SELECT c.ID
        FROM "table" c
        -- 补全子查询的来源表与GROUP BY逻辑
        LEFT JOIN (SELECT ID, COUNT(*) AS trx FROM 你的交易表 GROUP BY ID) AS abc
        ON c.ID = abc.ID
        WHERE 1=1 
        AND c.PARAM = 12 -- 建议加表别名避免字段冲突
        GROUP BY c.ID -- 补全的GROUP BY子句
        HAVING SUM(abc.trx) > 2
        QUALIFY ROW_NUMBER() OVER (/* 你的窗口函数分区排序逻辑 */) = 1
    ) AS q1
    QUALIFY ROW_NUMBER() OVER (/* 你的窗口函数分区排序逻辑 */) = 1
) AS q2

扩展说明

如果你后续需要在内层SELECT中返回其他非聚合字段(比如用户名称、注册时间等维度字段),需要将这些新增的非聚合字段同步加入GROUP BY列表中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:24:05