mysql - 群组功能不支持引用

标签 mysql sql

我在使用这个查询时遇到了一些问题,看来我不能在分组查询中使用别名作为引用

SELECT v.V_VEHICLEID, v.V_LICENSENO,
ROUND((MAX(IF(DAY(WP_DATETIME) = 1, WP_ODOMETER, NULL)) - MIN(IF(DAY(WP_DATETIME) = 1, WP_ODOMETER, NULL))) / 1000) AS TRIP1,    
...,
ROUND((MAX(IF(DAY(WP_DATETIME) = 31, WP_ODOMETER, NULL)) - MIN(IF(DAY(WP_DATETIME) = 31, WP_ODOMETER, NULL))) / 1000) AS TRIP31,

ROUND(MAX(IF(DAY(WP_DATETIME) = 1, WP_FUELREAD, NULL)) - MIN(IF(DAY(WP_DATETIME) = 1, WP_FUELREAD, NULL)),2) AS FUEL1,
...,
ROUND(MAX(IF(DAY(WP_DATETIME) = 31, WP_FUELREAD, NULL)) - MIN(IF(DAY(WP_DATETIME) = 31, WP_FUELREAD, NULL)),2) AS FUEL31,

(SELECT TRIP1 / FUEL1) AS ECON1,
...,
(SELECT TRIP31 / FUEL31) AS ECON31
FROM VEHICLES v
JOIN WAYPOINTS wp on wp.WP_VEHICLEID = v.V_VEHICLEID
WHERE MONTH(wp.WP_DATETIME) = '6' AND v.V_USER = 'tc'
GROUP BY wp.WP_VEHICLEID

错误

Reference 'TRIP1' not supported (reference to group function)

有什么解决办法吗?

最佳答案

您不能在同一查询中使用您在查询中定义的列别名。尝试如下操作:

SELECT   *,
         TRIP1 / FUEL1 AS ECON1,
         TRIP31 / FUEL31 AS ECON31,
         OTHER COLUMNS....
FROM
(
    SELECT    v.V_VEHICLEID, 
              v.V_LICENSENO,
              ROUND((MAX(IF(DAY(WP_DATETIME) = 1, WP_ODOMETER, NULL)) - MIN(IF(DAY(WP_DATETIME) =     1,     WP_ODOMETER, NULL))) / 1000) AS TRIP1,
              ROUND(MAX(IF(DAY(WP_DATETIME) = 1, WP_FUELREAD, NULL)) - MIN(IF(DAY(WP_DATETIME) = 1,     WP_FUELREAD, NULL)),2) AS FUEL1,
              ROUND((MAX(IF(DAY(WP_DATETIME) = 31, WP_ODOMETER, NULL)) - MIN(IF(DAY(WP_DATETIME) = 31, WP_ODOMETER, NULL))) / 1000) AS TRIP31,
              ROUND(MAX(IF(DAY(WP_DATETIME) = 31, WP_FUELREAD, NULL)) - MIN(IF(DAY(WP_DATETIME) = 31, WP_FUELREAD, NULL)),2) AS FUEL31,
              OTHER COLUMNS...
    FROM      VEHICLES v
    JOIN      WAYPOINTS wp
    ON        wp.WP_VEHICLEID = v.V_VEHICLEID
    WHERE     MONTH(wp.WP_DATETIME) = '6' 
    AND       v.V_USER = 'tc'
    GROUP BY  wp.WP_VEHICLEID
) t

关于mysql - 群组功能不支持引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532788/

相关文章:

php - 如何从动态url请求php检查数据

php - UTF-8 字符串在某处错误编码

mysql - 如何将主键、外键和备用键连接在一起?

Mysql修改密码时出现错误1064

sql - 微软 SQL 2012 : In SQL Shift columns to left side if column contains 0

mysql - MyISAM和InnoDB一起查询时表锁定问题

PHP 2 个日期之间

mysql - 选择 mysql 中两个表的每月数据计数

mysql - 查询 1 个表中的记录,其中第 2 个表描述记录是否需要填写字段

mysql - "union all"的多重选择不起作用