Pessoal,

Estou executando esse select:

SELECT
    ped_data
    , SUM(CASE WHEN ped_coddepto = 3 THEN 1 ELSE 0 END) AS fiscal
    , SUM(CASE WHEN ped_coddepto = 5 THEN 1 ELSE 0 END) AS dsi
    , SUM(CASE WHEN ped_coddepto = 7 THEN 1 ELSE 0 END) AS agendamento
    , SUM(CASE WHEN ped_coddepto = 4 THEN 1 ELSE 0 END) AS logistica
    , SUM(CASE WHEN ped_coddepto = 6 THEN 1 ELSE 0 END) AS transportadora
    , COUNT(*) AS total
FROM pedido WHERE (ped_data < '2008-10-24')
GROUP BY ped_data
ORDER BY 1;

E obtenho esse resultado:

ped_data    | fiscal | dsi | agendamento | logistica | transportadora |
total
-----------------+--------+-----+---------------------+------------+----------------------+-------
 2008-10-20 |      1 |   0 |                    1 |           0 |
         0 |     2
 2008-10-21 |      1 |   0 |                    0 |           0 |
          0 |     1
 2008-10-22 |      2 |   0 |                    2 |           0
|                    0 |     4
 2008-10-23 |      0 |   1 |                    0 |           0
|                    0 |     1
(4 registros)

Onde cada coluna (com exceção de ped_data e total) representa um
departamento, ou seja, o resultado me mostra o total por data e
departamento.

O problema é que isso está totalmente manual, se for criado um novo
departamento terei que alterar a select para contemplar o novo
departamento,
existe a possibilidade de deixar algo mais natural, sem necessidade de
alterar o select a cada novo departamento criado?

[]s
Danilo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a