0

我正在尝试根据用户输入按天、月或年对查询的响应进行分组。

为此,我从log_time列中提取日、月或年AS when,然后尝试这样做,GROUP BY when但 CakePHP 说:

SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "when" LINE 1: ...2-31' GROUP BY "Passenger"."route_id", "Route"."name", when ^

这是我的函数调用示例,其中分组为“月”。

$fields = array(
    "CONCAT(DATE_PART('year', \"Passenger\".\"log_time\"), '-', DATE_PART('month', \"Passenger\".\"log_time\")) AS when", 
    "Passenger.route_id", 
    "Route.name", 
    "SUM(Passenger.embarked) AS embarked"
    );
$conditions = array(
    "Passenger.log_time >=" => $start, 
    "Passenger.log_time <=" => $end
    );
$group = array("Passenger.route_id", "Route.name", "\"when\"");

return $this->find('all', array('fields' => $fields, 'conditions' => $conditions, 'group' => $group));

这是在 Cake 2.3.5 上使用 Postgres。有没有其他人知道如何做到这一点?

4

1 回答 1

1

when是与 一起使用的关键字CASE。看起来 PostgreSQL 可以找出whenin yourselect只是一个标识符,但没有足够的上下文在GROUP BY. 我会在两个地方引用它:

"CONCAT(DATE_PART('year', \"Passenger\".\"log_time\"), '-', DATE_PART('month', \"Passenger\".\"log_time\")) AS \"when\"", 

和:

$group = array("\"when\"", "Passenger.route_id", "Route.name");
于 2013-05-31T22:11:58.943 回答