2015-07-22 85 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); 

那么这是用我的查询IM(很简单),但我总是得到同样的错误。

选择a.dealer_name,从v_vss_car_wash一个

现在

a.dealer_code ,这是导致该错误消息

: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

只需添加'd。 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

谢谢你们。 –