2014-02-07 4 views
0

У меня есть код ниже:Группировка элементов по дате

for($j=0; $j<=odbc_fetch_row($result); $j++){ 


        $date = odbc_result($result, 'DATE'); 
        $A = odbc_result($result, 'A'); 
        $B = odbc_result($result, 'B'); 
        $C = odbc_result($result, 'C'); 
        $D = odbc_result($result, 'D'); 
        $E= odbc_result($result, 'E'); 

        echo $date." ".$A." ".$B." ".$C." ".$D." ".$E."<br/>"; 
} 
DATE A B C D E 
20140101 0 8225.12 0 0 0 
20140101 18483.28 0 0 0 0 
20140101 0 0 12275.49 0 0 
20140101 0 0 0 3013.50 0 
20140101 0 0 0 0 4552.20 
20140102 0 3612.30 0 0 0 
20140102 6850.10 0 0 0 0 
20140102 0 0 5695.45 0 0 
20140102 0 0 0 3291.80 0 
20140102 0 0 0 0 2006.20 
20140103 0 2684.10 0 0 0 
20140103 13342.26 0 0 0 0 
20140103 0 0 6981.14 0 0 
20140103 0 0 0 3887.93 0 
20140103 0 0 0 0 5117.50 

Как я сгруппировать элементы по дате, как следующий?

ДАТА ABCDE

20140101 18483,28 8225,12 12275,49 3013,50 4552,20
20140102 6850,10 3612,30 5695,45 3291,80 2006,20

ответ

0

Вы можете сделать это в MySQL Query непосредственно, как показано ниже предполагается, что ваш шаблон данных такое же значение для в каждой строке любой из столбцов a, b, c, d, e будет иметь значение и остальное все 0 как

SELECT `date`, 
     max(`a`) as `a`, 
     max(`b`) as `b`, 
     max(`c`) as `c`, 
     max(`d`) as `d`, 
     max(`e`) as `e` 
FROM `test` 
GROUP BY `date` 

Таким образом, после выполнения запроса вы получите данные по петле

чек здесь

http://sqlfiddle.com/#!2/4952f0/12

1

Попробуйте

$result = array(); 
for($j=0; $j<=odbc_fetch_row($result); $j++){ 
     $date = odbc_result($result, 'DATE'); 
     $A = odbc_result($result, 'A'); 
     $B = odbc_result($result, 'B'); 
     $C = odbc_result($result, 'C'); 
     $D = odbc_result($result, 'D'); 
     $E= odbc_result($result, 'E'); 
     $row = array($date,$A,$B,$C,$D,$E); 
     for($i=0;$i<count($row);$i++){ 
     if($row[$i]>0) { 
      $result[$date][$i] = $row[$i]; 
     } 
     } 
} 

Смотрите демо here

+0

БЛАГОДАРЯ. Однако, как распечатать значения не в формате массива? – user1033038

+0

Как вы хотите печатать? вы можете использовать implode –

+0

Я хотел бы распечатать его в формате HTML – user1033038

Смежные вопросы