iMasters Fóruns: referência cruzada no oracle - iMasters Fóruns

Ir para

Página 1 de 1
  • Novo tópico
  • Responder

referência cruzada no oracle

#1 Membro offline   etspaz Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 110
  • Cadastrado: 22-fevereiro 07

Postou 20 outubro 2009 - 17:17

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.

#2 Membro online   Motta Ícone

  • Motta
  • Ícone
  • Grupo: Moderadores
  • Posts: 1999
  • Cadastrado: 13-janeiro 05
  • Localização:Niterói/Rio de Janeiro

Postou 21 outubro 2009 - 09:14

Faça GROUP BY acct_nbr ao ínvez de GROUP BY acct_nbr,CLASSE

#3 Membro offline   etspaz Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 110
  • Cadastrado: 22-fevereiro 07

Postou 21 outubro 2009 - 12:20

Ver postMotta, em 21 outubro 2009 - 09:14 , disse:

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?

#4 Membro online   Motta Ícone

  • Motta
  • Ícone
  • Grupo: Moderadores
  • Posts: 1999
  • Cadastrado: 13-janeiro 05
  • Localização:Niterói/Rio de Janeiro

Postou 21 outubro 2009 - 13:42

Me parece que sim.

#5 Membro offline   etspaz Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 110
  • Cadastrado: 22-fevereiro 07

Postou 06 novembro 2009 - 14:27

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:

Quote

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.

#6 Membro online   Motta Ícone

  • Motta
  • Ícone
  • Grupo: Moderadores
  • Posts: 1999
  • Cadastrado: 13-janeiro 05
  • Localização:Niterói/Rio de Janeiro

Postou 06 novembro 2009 - 14:42

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.

Página 1 de 1
  • Novo tópico
  • Responder

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)