Array
(
)

sql, group by e subquery

Alex.pb.64b
   - 29 dez 2008

Bom dia,
Estou com um problema.
Tenho quatro tabelas (exames, prestadores, exam_mestre, exam_detalhe),
Estou com a tarefa de fazer um relatório com todas os exames marcados
para um determinado prestador de servico, com os totais de cada exame.

As tabelas estão assim estruturadas:
Tabela: Exames - Campos: CODEX, EXAME
Tabela: Prestadores - Campos: CODPRES, PRESTADOR
Tabela: Exam_mestre - Campos: AUTORIZACAO, CODPRES, DATA_EX
Tabela: Exam_detalhe - Campos: AUTORIZACAO, CODEX, AUTORIZADO

Explicação: Tabela Exam_detalhe, chave primária é Autorizacao+codex.
Exam_detalhe faz referência a tabela exam_mestre(autorizacao) e referência a tabelas exames (codex).
A tabela exam_mestre faz referência a tabela Prestadores através de Codpre, sendo chave primária o número da autorização.

O que desejo:
O totais de cada exame marcado por prestador, em um determinado período.

Exemplo de resultado:
Para o prestador de código 152 (Lab. Central Ltda.), no período de 01/01/2008 a 30/06/2008 obtivemos os seguintes números:

CODEX EXAME QTDE
10782 usg pel 510
52410 rx abd. 052
65210 usg ab. 102

Como seria a instrução sql para adquirir tal resultado?[/tagcod]

Emerson
   - 11 jan 2009

tente assim:#Código

select
  em.CODPRES, ex.CODEX, ex.EXAME, count(ed.CODEX) QTDE
from
  EXAM_DETALHE ed
inner join
  EXAM_MESTRE em on (em.AUTORIZACAO = ed.AUTORIZACAO)
inner join
  EXAMES ex on (ex.CODEX = ed.CODEX)
group by
  em.CODPRES, ex.CODEX, ex.EXAME