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

如何解决SELECT列表中列未在聚合函数或GROUP BY子句的错误

问题分析与修正

核心错误原因

第一个LEFT OUTER JOIN的子查询存在语法错误:GROUP BY ME_ID仅按ME_ID分组,但SELECT列表中包含truck_ID、hazmat、product_description这些非聚合列,且未将它们加入GROUP BY子句。SQL要求分组查询中,未使用聚合函数的列必须全部包含在GROUP BY里,否则数据库无法确定要返回这些列的哪一行数据。

另外你的WHERE子句存在逻辑优先级问题:AND的优先级高于OR,导致只有第一个地址条件会和年份条件联动,其余地址条件会忽略2022年的限制,必须用括号将所有地址条件包裹起来。

修正后的查询语句

假设你的需求是:对table2中每个truck_ID计算总重量,同时取该truck_ID下最新freight_ID对应的hazmat和product_description,修正后的SQL如下:

select 
    l.me_id,
    l.CREATED_DATE,
    st.location_name,
    st.location_address_1,
    st.location_city,
    st.location_state_code,
    st.location_postal_code,
    l.mode_type,
    li.total_weight as weight,
    li.hazmat,
    li.PRODUCT_DESCRIPTION
from tp.table l

LEFT OUTER JOIN
(
    SELECT m.truck_ID, m.hazmat, m.total_weight, m.product_description
    FROM (
        SELECT 
            truck_ID,
            hazmat,
            SUM(weight) OVER(PARTITION BY truck_ID) AS total_weight,
            product_description,
            ROW_NUMBER() OVER(PARTITION BY truck_ID ORDER BY freight_ID DESC) AS R_NO
        FROM [TP].[table2] 
        where status='active'
    ) m 
    where R_NO=1
) li ON L.truck_ID=li.truck_id

LEFT OUTER JOIN
(
    Select n.* from
    (
        SELECT ME_ID, location_name, location_address_1, location_city, location_state_code,location_postal_code, 
        Row_number() OVER(PARTITION BY ME_ID ORDER BY stop_ID DESC) AS R_NO
        FROM [TP].[table3] 
        where status='active' and STOP_SEQUENCE_NUMBER = '1'
    ) n where R_NO=1
) st ON L.truck_ID=st.truck_id

where year(l.CREATED_date) = '2022' 
AND (
    LOCATION_address_1 LIKE '%6210 GLENWAY%'
    OR LOCATION_address_1 LIKE '%480 WILEY%'
    OR LOCATION_address_1 LIKE '%575 5TH%' -- 数据中不存在
    OR LOCATION_address_1 LIKE '%100 E ROOSEVELT%'
    OR LOCATION_address_1 LIKE '%565 5TH%' -- 数据中不存在
    OR LOCATION_address_1 LIKE '%1001 SE TV%'
    OR LOCATION_address_1 LIKE '%435 HUDSON%'
    OR LOCATION_address_1 LIKE '%575 FIFTH%'-- 数据中不存在
    OR LOCATION_address_1 LIKE '%3940 PLANK%'
    OR LOCATION_address_1 LIKE '%609 SW 8TH%'
    OR LOCATION_address_1 LIKE '%28145 HARRISON%' 
    OR LOCATION_address_1 LIKE '%2620 SW 17Th%'
    OR LOCATION_address_1 LIKE '%833 W 16TH%'
    OR LOCATION_address_1 LIKE '%992 POQUONNOCK%'
    OR LOCATION_address_1 LIKE '%4555 DANVERS%'
    OR LOCATION_address_1 LIKE '%100 COMMERCE DR%'
    OR LOCATION_address_1 LIKE '%6600 JEFFERSON%'
)

其他说明

如果你的需求是按ME_ID分组计算总重量,同时取该ME_ID下最新记录的truck_ID、hazmat等字段,可以调整子查询逻辑:先聚合计算总重量,再关联获取最新的单条记录,避免分组和非聚合列的冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:45:46