sql group by с левым соединением - PullRequest
1 голос
/ 14 апреля 2010

оператор ошибки: ошибка: ORA-00979: не выражение GROUP BY

 select org_division.name  , org_department.name , org_surveylog.division_code as divisionCode,org_surveylog.department_code as departmentCode , max(org_surveylog.actiondate) from org_surveylog 
left join org_division on (org_surveylog.division_code= org_division.division_code and org_surveylog.SURVEY_NUM= org_division.survey_num)
left join org_department on (org_surveylog.department_code = org_department.department_code and org_surveylog.SURVEY_NUM = org_department.survey_num) 
 group by org_surveylog.division_code,org_surveylog.department_code 

но ниже все в порядке

 select org_surveylog.division_code as divisionCode,org_surveylog.department_code as departmentCode , max(org_surveylog.actiondate) from org_surveylog 
left join org_division on (org_surveylog.division_code= org_division.division_code and org_surveylog.SURVEY_NUM= org_division.survey_num)
left join org_department on (org_surveylog.department_code = org_department.department_code and org_surveylog.SURVEY_NUM = org_department.survey_num) 
 group by org_surveylog.division_code,org_surveylog.department_code 

как использовать group by с левым соединением, когда мне нужно показать значение org_division.name, org_department.name ?

1 Ответ

2 голосов
/ 14 апреля 2010

Вам необходимо изменить значение GROUP BY на

 group by   org_division.name , 
            org_department.name
            org_surveylog.division_code,
            org_surveylog.department_code 

С Oracle Выбор операторов: Выбор оператора с предложением GROUP BY

SELECT <column_name>, <aggregating_operation>
FROM <table_name>
GROUP BY <column_name>;

Вы заметите, что вам нужно включить неагрегированные столбцы в оператор GROUP BY.

...