Group by

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
renan_pre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Ter, 10 Abr 2007 11:08 am
Localização: São Paulo - SP
M. Renan

Galera,
to com o seguinte problema...

esta query está trazendo corretamente os dados... codigo / descricao / quantidade.... agrupados por codigo e descricao.... porem, preciso incluir na query a data.... só que se eu agrupar a data tambem, os resultados vao vir errados... pois eu preciso saber quantos diagnosticos foram usados num determinado periodo... então ficaria assim

Cod - Descricao - Qtde
1 X 50

ou seja, o diagnostico 1 foi usado 50 vezes.....

Selecionar tudo

select diag.cd_diag    DIAGNOSTICO
        ,diag.ds_diag        DESCRICAO
        ,count(diag.cd_diag) QUANTIDADE
 from diag
        ,atendimento
where diag.cd_diag = atendimemento.cd_diag
    and atendimento.dt_alta is not null
  group by diag.cd_diag, diag.ds_diag
  order by quantidade desc
como poderia resolver esse problema???? trazer na query a data?

valeu!!!
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Olá Renan, beleza??

desculpa, mas não consegui entender o motivo de colocar a data nos campos a pesquisar sendo que pelo visto você vai informar o periodo que deseja consultar... somente colocando o periodo na clausula where não resolveria??

[]'s
renan_pre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Ter, 10 Abr 2007 11:08 am
Localização: São Paulo - SP
M. Renan

E aí Cristiano! beleza!

então cara, não resolveria, pois, na verdade eu estou desenvolvendo um relatorio numa ferramenta chamada MVReport... Esta query é uma view e o filtro para impressao do relatorio será o período... mas, para eu colocar o periodo como o filtro, a data tem que estar na query... ou seja, tem que ser uma coluna da view... e esse relatorio tem que ser desenvolvido no MV Report, não poderá sem em outro.....

valeu
renan_pre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Ter, 10 Abr 2007 11:08 am
Localização: São Paulo - SP
M. Renan

Só para ilustrar mais.... o MVReport monta a query conforme o filtro utilizado... por exemplo, se eu selecionar que quero como filtro a data (que tem que ser uma coluna da view) ele vai pedir um operador que no caso seria "Entre" .... daí a propria ferramenta montaria a query colocando uma clausula: and data between ...... and ...... .
Eu não tenho como eu mesmo colocar na query um parametro, assim como no Oracle Report........
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Oi Renan,

já que é pra uma view deu pra entender sim..
então, infelizmente colocar a data no seu select sem utilizar o group by não tem jeito...
não sei o q você acha, mas uma opçao seria você criar a view sem o group by, somente o select com os campos cd_diag, ds_diag, data, ai você poderia utilizar o group by na sua view.. dessa forma funcionaria...

[]'s!!
renan_pre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Ter, 10 Abr 2007 11:08 am
Localização: São Paulo - SP
M. Renan

valeu a dica brother!!!! funcionou!!

Abraço!

Renan
kellcristina
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 28 Abr 2008 11:36 am
Localização: São Paulo

Pessoal, boa tarde!

Estou tentando realizar um select em duas tabelas somando os valores de um dos campos e não estou conseguindo.
Me sugeriram usar o group by, mas também não consegui.
Alguém poderia me ajudar?

Tks!
Kelly

Selecionar tudo

select sum(b.invoicelin5),
max(b.ponum),
a.vendor,
a.vendorinvoicenum,
to_char(a.invoicedate,'dd/mm/yyyy'),
to_char(a.duedate,'dd/mm/yyyy'),
a.status,
a.invoice4
from invoice a, invoiceline b
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Acredito que só esteja faltando o comando group by mesmo:

Selecionar tudo

select sum(b.invoicelin5),
max(b.ponum),
a.vendor,
a.vendorinvoicenum,
to_char(a.invoicedate,'dd/mm/yyyy'),
to_char(a.duedate,'dd/mm/yyyy'),
a.status,
a.invoice4
from invoice a, invoiceline b 

group by a.vendor,
a.vendorinvoicenum,
to_char(a.invoicedate,'dd/mm/yyyy'),
to_char(a.duedate,'dd/mm/yyyy'),
a.status,
a.invoice4
Caso tenha alguma dúvida sobe este comando, uma regra simples para usá-lo é colocar todos os campos retornados por sua consulta que não possuem uma função agregada (min, max, avg, sum, count, etc)
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 19 visitantes