Skip to content

Commit c9f8f53

Browse files
committed
fix group by clause when aggregating by month/week/year
fixes mtierltd#138 and mtierltd#135
1 parent 9330c85 commit c9f8f53

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

lib/Db/ReportItemMapper.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,10 @@ public function report($user, $from, $to, $filterProjectId, $filterClientId, $fi
5353
}
5454

5555

56-
if(empty($timegroup)){
57-
if (!$aggregation) {
58-
$selectFields[]= "start as time";
59-
$selectFields[]= "start as ftime";
60-
} else {
61-
$selectFields[]= "min(start) as time";
62-
$selectFields[]= "min(start) as ftime";
63-
}
64-
} else {
56+
if (!$aggregation) {
6557
$selectFields[]= "start as time";
66-
$selectFields[]= "start as ftime";
58+
} else {
59+
$selectFields[]= "min(start) as time";
6760
}
6861

6962
if ($this->dbengine == 'POSTGRES') {
@@ -73,6 +66,8 @@ public function report($user, $from, $to, $filterProjectId, $filterClientId, $fi
7366
$selectFields[]= "date_part('year', to_timestamp(start)) as ftime";
7467
}elseif ($timegroup == 'month') {
7568
$selectFields[]= "to_char(to_timestamp(start), 'YYYY-MM') as ftime";
69+
}else {
70+
$selectFields[]= "start as ftime";
7671
}
7772
} else if ($this->dbengine == 'SQLITE') {
7873
if ($timegroup == 'week') {
@@ -81,6 +76,8 @@ public function report($user, $from, $to, $filterProjectId, $filterClientId, $fi
8176
$selectFields[]= "strftime('%Y', datetime(start, 'unixepoch')) as ftime";
8277
}elseif ($timegroup == 'month') {
8378
$selectFields[]= "strftime('%Y-%m', datetime(start, 'unixepoch')) as ftime";
79+
}else {
80+
$selectFields[]= "start as ftime";
8481
}
8582
} else {
8683
if ($timegroup == 'week') {
@@ -89,6 +86,8 @@ public function report($user, $from, $to, $filterProjectId, $filterClientId, $fi
8986
$selectFields[]= "YEAR(FROM_UNIXTIME(start)) as ftime";
9087
}elseif ($timegroup == 'month') {
9188
$selectFields[]= "DATE_FORMAT(FROM_UNIXTIME(start),'%Y-%m') as ftime";
89+
}else {
90+
$selectFields[]= "start as ftime";
9291
}
9392
}
9493

@@ -246,7 +245,7 @@ public function report($user, $from, $to, $filterProjectId, $filterClientId, $fi
246245
if (empty($limit)){
247246
$limit = 10000;
248247
}
249-
$sql = 'SELECT '.$selectItems.' where '.implode(" and ",$filters).' '.$group. ' order by start desc';
248+
$sql = 'SELECT '.$selectItems.' where '.implode(" and ",$filters).' '.$group;
250249
//var_dump($sql);
251250
// var_dump($params);
252251
return $this->findEntities($sql, $params, $limit, $start);

0 commit comments

Comments
 (0)