[firebase-br] Ajuda criação de Consulta complexa - Firebird 2.1.3

Valdir Marcos valdir.marcos em ig.com.br
Sex Out 16 10:09:01 -03 2009


Bom dia.
Talvez esse caminho ajude:

Select 1, ID, AVALIADOR, DT_INICIO, DT_FIM, GRAU_1, GRAU_2, GRAU_3, (GRAU_1
+ GRAU_2 + GRAU_3) as TOTAL, Null as AVALIACAO_FINAL From Tabela Where ID =
1
Union
Select 2, ID, AVALIADOR, DT_INICIO, DT_FIM, GRAU_1, GRAU_2, GRAU_3, (GRAU_1
+ GRAU_2 + GRAU_3), Null From Tabela Where ID = 2
Union
Select 3, ID, AVALIADOR, DT_INICIO, DT_FIM, GRAU_1, GRAU_2, GRAU_3, (GRAU_1
+ GRAU_2 + GRAU_3), Null From Tabela Where ID = 3
Union
Select 4, ID, AVALIADOR, DT_INICIO, DT_FIM, GRAU_1, GRAU_2, GRAU_3, (GRAU_1
+ GRAU_2 + GRAU_3), Null From Tabela Where ID = 4
Union
Select 5, ID, AVALIADOR, DT_INICIO, DT_FIM, GRAU_1, GRAU_2, GRAU_3, (GRAU_1
+ GRAU_2 + GRAU_3), Null From Tabela Where ID = 5
Union
Select 6, ID, AVALIADOR, DT_INICIO, DT_FIM, GRAU_1, GRAU_2, GRAU_3, (GRAU_1
+ GRAU_2 + GRAU_3), Null From Tabela Where ID = 6
Union
Select 7, ID, AVALIADOR, DT_INICIO, DT_FIM, GRAU_1, GRAU_2, GRAU_3, (GRAU_1
+ GRAU_2 + GRAU_3), Null From Tabela Where ID = 7
Union
Select 8, ID, AVALIADOR, DT_INICIO, DT_FIM, GRAU_1, GRAU_2, GRAU_3, (GRAU_1
+ GRAU_2 + GRAU_3), Null From Tabela Where ID = 8
Union
Select 9, Null, 'AVALIAÇÃO FINAL', Null, Null, Null, Null, Null, Null,
((Select (Sum(GRAU_1) + Sum(GRAU_2) + Sum(GRAU_3) From Tabela Where ID in
(1,2,3,4,5,6,7)) * 2) + (Select (Sum(GRAU_1) + Sum(GRAU_2) + Sum(GRAU_3)
From Tabela Where ID = 8) * 6)) / 8
Order By 1;

Um abraço,

Valdir



2009/10/16 Eduardo Belo <beloelogica em gmail.com>

> Prezados,
>
> Preciso criar uma consulta com a seguinte formatação:
>
> ID  | AVALIADOR    | DT_INICIO  | DT_FIM      | GRAU_1 |GRAU_2 | GRAU_3 |
> TOTAL  | AVALIACAO_FINAL
>
> ===============================================================================
> 01 | FUNCIONARIO | 01/01/2009 | 31/03/2009 |     40      |    35       |
>  20       |    95     |
>
> ===============================================================================
> 02 | CHEFE            | 01/01/2009 | 31/03/2009 |     35      |    20
> |    15       |    70     |          242,5
>
> ===============================================================================
> 03 | FUNCIONARIO | 01/04/2009 | 30/06/2009 |     25      |    35       |
> 30       |    90     |
>
> ===============================================================================
> 04 | CHEFE            | 01/04/2009 | 30/06/2009 |     20      |    40
>  |    35       |    95     |          251,25
>
> ===============================================================================
> 05 | FUNCIONARIO | 01/07/2009 | 30/09/2009 |     20      |    35       |
> 50       |  105     |
>
> ===============================================================================
> 06 | CHEFE            | 01/07/2009 | 30/09/2009 |     25      |    30
> |    45       |  100     |          285
>
> ===============================================================================
> 07 | FUNCIONARIO | 01/10/2009 | 31/12/2009 |     30      |    20       |
> 50       |  100     |
>
> ===============================================================================
> 08 | CHEFE            | 01/10/2009 | 31/12/2009 |     25      |    25
> |    45       |    95     |         271,25
>
> ===============================================================================
>
> Onde o campo TOTAL é a soma dos campos: GRAU_1 + GRAU_2 + GRAU_3 e
> AVALIACAO_FINAL obedece a seguinte fórmula:
>
> FÓRMULA AVALIAÇÃO FINAL: (FUNCIONÁRIO x 2) + (CHEFE x 6) / 8
>
> O agrupamento é por Trimestre que pode ser identificado extraindo o mês das
> datas.
>
> Alguém pode me dar um exemplo de como criar essa consulta criando uma view
> ou uma
> store procedure?
>
> Obrigado a todos que ajudarem.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>


Mais detalhes sobre a lista de discussão lista