Difficulty: Moderate

Uma matriz relatório é uma grade-como representação dos dados. Possui uma linha de rótulos, etiquetas e de uma coluna, em um grid, dados relativos a ambos os linha e coluna. Matrix relatórios são também chamados relatórios cruzada.

Uma matriz relatório tem um grupo de dados de filas, um grupo de dados para as colunas, um grupo de dados cruzados produto e um grupo de dados como o valor para aquisição de produto. O cross-grupo de produtos representa todas as combinações possíveis de linha e coluna grupos.

Agora, vamos dar uma olhada em um exemplo. Suponha que você tenha uma tabela chamada Inv_summary. Possui três colunas: Inv_date, Inv_status e Inv_value. Agora, pretende gerar um relatório que mostra o valor total das facturas de abrir e fechar cada mês, como por exemplo a seguir.

Abrir fechar mês

-------- ------------ ------------

Jan-07 20 19

Fevereiro-07 0 153

Mar-07 18 56

Abr-07 43 0

Maio-07 93 0

Jun-07 79 0

Jul-07 112 0

Aqui estão os passos para gerar o relatório.

  1. Crie uma tabela Inv_summary.
  2. Criar tabela Inv_summary (Inv_date data, Inv_status varchar2 (1), Inv_value número);

  3. Inserir alguns dados em Inv_summary tabela.
  4. Inserir Inv_summary em valores ('01-jan-07 ',' O ', 20,00);
    Inserir Inv_summary em valores ('01-jan-07 ',' C ', 12,00);
    Inserir Inv_summary em valores ('10-jan-07 ',' C ', 7,00);
    Inserir Inv_summary em valores ('05-fev-07 ',' C ', 153,00);
    Inserir Inv_summary em valores ('12-mar-07 ',' C ', 48,00);
    Inserir Inv_summary em valores ('15-mar-07 ',' C ', 8,00);
    Inserir Inv_summary em valores ('23-mar-07 ',' O ', 18,00);
    Inserir Inv_summary em valores ('20-Abr-07 ',' O ', 43,00);
    Inserir Inv_summary em valores (maio-'01-07 ',' O ', 61.00);
    Inserir Inv_summary em valores (maio-'01-07 ',' O ', 32.00);
    Inserir Inv_summary em valores ('01-jun-07 ',' O ', 18,00);
    Inserir Inv_summary em valores ('01-jun-07 ',' O ', 33,00);
    Inserir Inv_summary em valores ('01-jun-07 ',' O ', 28,00);
    Inserir Inv_summary em valores ('01-jul-07 ',' O ', 20,00);
    Inserir Inv_summary em valores ('01-jul-07 ',' O ', 24,00);
    Inserir Inv_summary em valores ('01-jul-07 ',' O ', 68,00);
    Commit;

  5. Sql execute o seguinte comando para gerar o relatório.
  6. SELECT to_char (to_date (to_char (inv_date, «Mon-aa"), "Mon-aa"), "Mon-aa ') Mês,
    sum (decodificar (inv_status, 'O', inv_value, 0)) Abrir,
    sum (decodificar (inv_status, 'C', inv_value, 0)) Fechar
    DESDE Inv_summary
    GRUPO DE to_date (to_char (inv_date, «Mon-aa"), "Mon-aa ')
    ORDER BY to_date (to_char (inv_date, «Mon-aa"), "Mon-aa ')

    Abrir fechar mês

    --------- ------------ ------------

    Jan-07 20 19

    Fevereiro-07 0 153

    Mar-07 18 56

    Abr-07 43 0

    Maio-07 93 0

    Jun-07 79 0

    Jul-07 112 0

    No exemplo acima, temos o criou para que o grupo vai invoice_status em todo o mês eo grupo vai para baixo, formando uma rede que mostra o valor total das faturas. A chave na parte superior do comando SQL é DECODE função. Ele converte as linhas em colunas, verificando o valor da coluna Inv_status. Você pode escrever um relatório com matriz única ou múltiplas buscas. Um relatório de pesquisa único é geralmente mais eficiente do que um múltiplo consulta.

Average rating: