0

我在 SQL Server 中有一个查询

SELECT
    k12_dms_contacts_master.prefix_id AS prefix,
    k12_dms_contacts_master.first_name,
    k12_dms_contacts_master.last_name,
    k12_dms_contacts_master.email,
    k12_dms_institution_master.inst_name,
    k12_dms_institution_master.address,
    k12_dms_cities.name AS city_name,
    k12_dms_zip_codes.zip_code,
    k12_dms_institution_master.type_id,
    k12_dms_contacts_institution_jobtitles.glevel_id,
    k12_dms_districts.name AS district_name,
    k12_dms_counties.name AS county_name,
    k12_dms_institution_master.state_id,
    k12_dms_institution_master.phone,
    k12_dms_contacts_institution_jobtitles.job_title_id
FROM
    k12_dms_institution_master
INNER JOIN k12_dms_contacts_institution_jobtitles ON k12_dms_contacts_institution_jobtitles.inst_id = k12_dms_institution_master.id
INNER JOIN k12_dms_contacts_master ON k12_dms_contacts_institution_jobtitles.contact_id = k12_dms_contacts_master.id
INNER JOIN k12_dms_cities ON k12_dms_cities.id = k12_dms_institution_master.city_id
INNER JOIN k12_dms_districts ON k12_dms_districts.id = k12_dms_institution_master.district_id
INNER JOIN k12_dms_counties ON k12_dms_counties.id = k12_dms_institution_master.county_id
INNER JOIN k12_dms_zip_codes ON k12_dms_zip_codes.id = k12_dms_institution_master.zip_code_id
WHERE
    k12_dms_zip_codes.zip_code IN ('92678', '92679', '92688', '92690', '92691', '92692', '92693', '92694', '92877',
                                   '92879', '92881', '92883')
ORDER BY
    k12_dms_institution_master.state_id,
    k12_dms_institution_master.inst_name ASC

现在我想GROUP BY对电子邮件地址和机构名称执行,但我收到此错误:

列 'k12_dms_contacts_master.prefix_id' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

任何帮助都将是非常可观的。

4

1 回答 1

1

错误消息说明了一切。

您已经创建了一个组,并且由于该列不是“分组依据”的一部分,也不是所有组列(如 sum 或 count)的聚合,因此您不能在 select 子句中使用它。

请注意,group by 的返回是每组一行。从逻辑上讲,该列对于任何组成员都会有所不同,因此它不能容纳一行!

于 2012-07-13T10:24:43.027 回答