etspaz 0 Denunciar post Postado Outubro 20, 2009 Boa tarde pessoal, Estou fazendo uma consulta no oracle, que me retorna uma referencia cruzada. Aparentemente está normal, mas fiz uma pequena alteração no group by e alterou o resultado, como a query montei com ajuda de colegas na net, não sei qual é a forma correta. select ACCT_NBR, sum(decode(CLASSE,'AD ROAMING',charge_cr_amt,0))"AD ROAMING", sum(decode(CLASSE,'ASSINATURA',charge_cr_amt,0))"ASSINATURA", sum(decode(CLASSE,'CORREIO MÓVEL',charge_cr_amt,0))"CORREIO MÓVEL", sum(decode(CLASSE,'DESCONTO ASS FRANQUIA',charge_cr_amt,0))"DESCONTO ASS FRANQUIA", sum(decode(CLASSE,'DESCONTO DADOS',charge_cr_amt,0))"DESCONTO DADOS", sum(decode(CLASSE,'DESCONTO OUTRAS RECEITAS',charge_cr_amt,0))"DESCONTO OUTRAS RECEITAS", sum(decode(CLASSE,'ESCONTO VC1',charge_cr_amt,0))"DESCONTO VC1", sum(decode(CLASSE,'DSL INT',charge_cr_amt,0))"DSL INT", sum(decode(CLASSE,'FRANQUIA',charge_cr_amt,0))"FRANQUIA", sum(decode(CLASSE,'PARCELAMENTO DE EQUIPAMENTO',charge_cr_amt,0))"PARCELAMENTO DE EQUIPAMENTO", sum(decode(CLASSE,'SERV EVENTUAL',charge_cr_amt,0))"SERV EVENTUAL", sum(decode(CLASSE,'SMS - PTA',charge_cr_amt,0))"SMS - PTA", sum(decode(CLASSE,'SMS - PTP',charge_cr_amt,0))"SMS - PTP", sum(decode(CLASSE,'PACOTE ZAP',charge_cr_amt,0))"PACOTE ZAP", SUM(charge_cr_amt)"TOTAL" FROM (SELECT CHARGE_CR_ITEM.ACCT_NBR, CLASSE,CHARGE_CR_ITEM.charge_cr_amt FROM CHARGE_CR_ITEM INNER JOIN TAB_CLASSE T ON T.CAPTN_CD = CHARGE_CR_ITEM.CAPTN_CD WHERE CHARGE_CR_ITEM.LAST_BILL_DT = '20091016' AND CHARGE_CR_ITEM.CYCLE_CD = '78' AND CHARGE_CR_ITEM.CHARGE_CR_AMT <> 0 AND CHARGE_CR_ITEM.ACCT_NBR IN ('2036438273', '0122918103', '2046014486', '2017736468', '2032463104', '0122745278', '2046368293', '2028747547', '2046174031', '0142113041', '0121302166', '2042631597', '2038157407', '0010569210', '0000205224', '0001336454', '2046655030', '2031185815', '2037431523', '2045214936', '2046682329', '2033063542', '2041370548')) GROUP BY acct_nbr,CLASSE a única diferença quando tiro a classe do group by, retorna resultado diferente. Peço auxilio aos colegas mais experientes, pois não sei se devo ou não incluir. eu achava que não podia deixar de fora um campo do group by que não está em função. Desde já, agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 21, 2009 Faça GROUP BY acct_nbr ao ínvez de GROUP BY acct_nbr,CLASSE Compartilhar este post Link para o post Compartilhar em outros sites
etspaz 0 Denunciar post Postado Outubro 21, 2009 Faça GROUP BY acct_nbr ao ínvez de GROUP BY acct_nbr,CLASSE Valeu, Obrigado pela sugestão. Farei o que disse. A estrutura geral da qry está correta? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 21, 2009 Me parece que sim. Compartilhar este post Link para o post Compartilhar em outros sites
etspaz 0 Denunciar post Postado Novembro 6, 2009 opa boa tarde, Voltei a este tópico porque surgiu uma outra necessidade nesta mesma qry: Tem como ordenar as colunas do maior valor para o menor? exemplo: ACCT_NBR | AD ROAMING | ASSINATURA | CORREIO MÓVEL 02569875 | 0001256,32 | 0000605,12 | 0000000504,10 00125455 | 0001895,00 | 0001880,50 | 0000000110,80 pode-se observar que não existe ordenação nas linhas, mas as colunas de cada linha estão ordenadas do maior para o menor. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 6, 2009 Ordenar as colunas !? O que garante que na linha abaixo a ordem se mantenha ? para uma linha ACCT_NBR pode ser maior que AD ROAMING, para outra não. Compartilhar este post Link para o post Compartilhar em outros sites