2012-07-13 64 views
0

我在SQL Server查詢集團在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但我得到這個錯誤:

Column 'k12_dms_contacts_master.prefix_id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

任何幫助將是非常可觀的。

回答

1

錯誤消息說明了這一切。

您已經創建了一個組,並且由於此列不是「group by」的組成部分,也不是所有組列的聚合(如sum或count),所以不能在select子句中使用它。

請注意,組的返回是每組一行。從邏輯上來說,該專欄對於任何組員來說都是不同的,因此它不適合一行!

+2

^他說什麼。或者,要更多地考慮:**在select語句中的每個**字段**在集合函數中使用的NOT ** **必須在group by子句中。根據我的統計,在問題的查詢中,小組必須包含15個字段。 – RobIII 2012-07-13 10:26:19

+0

是的,但對所有提取的字段進行分組會導致錯誤:文本,ntext和圖像數據類型無法進行比較或排序,除非使用IS NULL或LIKE運算符。 – user1163513 2012-07-13 10:28:53

+1

好吧,你有一個文本字段?你不能在文本字段中使用GROUP BY。嘗試將其轉換爲varchar(選擇並分組),然後使用,如果您確定數據是否在特定長度內 – mihaisimi 2012-07-13 10:34:24