tengo esta consulta
select * from sales shop | date | hour | row_no | amount -----------+------------+-----------+--------+----------- shop_1 | 2012-08-14 | 00:08:00 | P01 | 10 shop_2 | 2012-08-12 | 00:12:00 | O05 | 40 shop_2 | 2012-08-12 | 00:12:00 | A01 | 20Tengo 1 millón de filas, puedo hacer esta consulta
select shop, SUM(amount) from sales group by shop shop | amount | -----------+------------+ shop_1 | 5666 | shop_2 | 4044 | shop_3 4044 |Pero necesito pasar los dias en las columnas y no se si me podrian ayudar a hacer esto
shop | 2012-08-1 | 2012-08-2 | 2012-08-3 | -----------+------------+-----------+--------+----------- shop_1 | 4005 | 5667 | 9987 | shop_2 | 4333 | 4554 | 1234 | shop_3 | 4555 | 6778 | 6677 |Sería agrupar por tienda en las filas y agrupar por días en las columnas en postgresql
Primero, debe instalar la extensión tablefunc . Desde la versión 9.1 puedes hacerlo usando crear extensión:
CREATE EXTENSION tablefunc; select * from crosstab ( select shop, date, SUM(amount) from sales group by shop 'select date from sales order by 1') AS ct(shop: text, '2012-08-1' text, '2012-08-2' text, '2012-08-3' text)