2015-07-22 3 views
0

Я всегда получаю ту же ошибку, когда я запускаю этот запрос. Я попытался использовать простой запрос, чтобы проверить, есть ли что-то не так в запросе. Я также заметил, что ошибка произошла, когда я использовал представление в моем запросе.databasename.d.first_column_in_the_table 'не находится в GROUP BY

CREATE OR REPLACE VIEW v_vss_car_wash AS

 SELECT 
    max(r.id) AS id 
    ,d.id AS dealer_id 
    ,d.dealer_code 
    ,d.dealer_name 
    ,count(*) AS total_respondents 
    ,sum(car_washed) AS car_washed     -- Car Washed 
    ,count(*) - sum(car_washed) AS car_unwashed  -- Car Unwashed 
    ,sum(IF (car_washed AND car_satisfied, 1, 0)) AS car_satisfied 
    ,sum(IF (car_washed AND NOT car_satisfied, 1, 0)) AS car_unsatisfied 
    ,MONTH(r.create_date) AS create_month 
    ,YEAR(r.create_date) AS create_year 
FROM t_vss_survey_response r 
    LEFT JOIN t_vss_dealer d ON (r.dealer_id = d.id) 
WHERE survey_code = "ASS" 
GROUP BY dealer_code, YEAR(r.create_date), MONTH(r.create_date); 

, то это мой им запрос с использованием (очень простой), но я всегда получаю ту же ошибку.

выберите a.dealer_name, a.dealer_code из v_vss_car_wash

сейчас, это сообщение об ошибке

Вызванный: org.eclipse.birt.data.engine.odaconsumer.OdaDataException: Не удается получить метаданные набора результатов. org.eclipse.birt.report.data.oda.jdbc.JDBCException: Оператор SQL не возвращает объект ResultSet. Ошибка SQL # 1: 'crmsdbdev.d.dealer_name' не находится в GROUP BY ; com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 'crmsdbdev.d.dealer_name' не в GROUP BY

+0

просто добавьте 'д. dealer_name' в * GROUP BY *. 'ONLY_FULL_GROUP_BY' может быть включен, поэтому вам нужно добавить все столбцы в предложение * SELECT *, которые не агрегированы. –

ответ

0

Просто добавьте соответствующие столбцы в group by:

CREATE OR REPLACE VIEW v_vss_car_wash AS 
SELECT 
    max(r.id) AS id 
    ,d.id AS dealer_id 
    ,d.dealer_code 
    ,d.dealer_name 
    ,count(*) AS total_respondents 
    ,sum(car_washed) AS car_washed     -- Car Washed 
    ,count(*) - sum(car_washed) AS car_unwashed  -- Car Unwashed 
    ,sum(IF (car_washed AND car_satisfied, 1, 0)) AS car_satisfied 
    ,sum(IF (car_washed AND NOT car_satisfied, 1, 0)) AS car_unsatisfied 
    ,MONTH(r.create_date) AS create_month 
    ,YEAR(r.create_date) AS create_year 
FROM t_vss_survey_response r 
    LEFT JOIN t_vss_dealer d ON (r.dealer_id = d.id) 
WHERE survey_code = "ASS" 
GROUP BY d.id, d.dealer_code, d.dealer_name, 
     YEAR(r.create_date), MONTH(r.create_date); 
+0

Спасибо, ребята. –