Oracle - Ayuda para Convertir sentencia sql con group by a un Bloque anonimo

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Ayuda para Convertir sentencia sql con group by a un Bloque anonimo

Publicado por Jeffry (4 intervenciones) el 14/06/2019 01:42:56
Hola buenas, Necesito ayuda soy nuevo en ORACLE, de hecho lo estoy llevando en lenguaje de cuarta generación en la U, tengo unas tabla llamada tipo de cambio con los siguientes campos: codigo_moneda, codigo_banco, fecha, monto, la consulta es necesito mostrar lo siguiente : Crear un bloque de código anónimo en plsql que calcule y muestre el tipo de cambio promedio, máximo y mínimo por cada banco y para cada moneda. .

El tema es que se que esto lo resolveria en SQL de la siguiente manera:

1
2
3
select codigo_banco,codigo_moneda,avg(monto),max(monto), min(Monto)
 from JMA_Tipo_de_cambio
group by codigo_banco,codigo_moneda;

pero tengo que hacerlo en un bloque anónimo y no tengo la mas minima idea de como trasladar ese codigo a un bloque anonimo y que funcione :(. Agradezco su ayuda y el compartir su experiencia con este novato.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roberto
Val: 12
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Ayuda para Convertir sentencia sql con group by a un Bloque anonimo

Publicado por roberto (5 intervenciones) el 14/06/2019 19:34:52
seria algo asi, o entendi mal.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
declare
cursor c is
select codigo_banco,codigo_moneda,avg(monto),max(monto) maximo, min(Monto) minimo
into
 from JMA_Tipo_de_cambio
group by codigo_banco,codigo_moneda;
 
begin
for reg in c
loop
       dbms_output.put_line('Banco='||reg.codigo_banco||' moneda='||to_char(codigo_moneda)||
                                           ' maximo='||to_char(reg.maximo)||
                                           ' minimo='||to_char(reg.minimo));
end loop;
 
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 8
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Ayuda para Convertir sentencia sql con group by a un Bloque anonimo

Publicado por Jeffry (4 intervenciones) el 14/06/2019 20:41:03
Excelente muchas gracias, me sirvió a la perfección, este fue el resultado :

Banco=1 moneda=1 maximo=602 minimo=595
Banco=1 moneda=2 maximo=706 minimo=700
Banco=1 moneda=3 maximo=716 minimo=710
Banco=2 moneda=1 maximo=605 minimo=599
Banco=2 moneda=2 maximo=711 minimo=705
Banco=2 moneda=3 maximo=726 minimo=720
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Ayuda para Convertir sentencia sql con group by a un Bloque anonimo

Publicado por Jeffry (4 intervenciones) el 14/06/2019 21:37:29
Roberto gracias a tu consulta también lo pude resolver de otra forma sin cursores.

Declare

codigo_banco Number(10);
codigo_moneda Number(10);
promedio Number(10);
maximo Number(10);
Minimo Number(10);


1
2
3
4
5
6
Begin
for i in (Select codigo_banco,codigo_moneda,AVG(Monto) promedio, Max(Monto) maximo, Min(Monto) Minimo into codigo_banco, codigo_moneda, promedio,Maximo, Minimo from  JMA_Tipo_de_cambio group by codigo_banco ,codigo_moneda order by codigo_banco ,codigo_moneda)
Loop
DBMS_OUTPUT.PUT_LINE ('Banco: '||i.codigo_banco || ' Dólar: ' ||i.codigo_moneda || ' Promedio: '|| i.promedio || ' Maximo: '|| i.maximo || ' Minimo: '|| i.Minimo);
 End loop;
END;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roberto
Val: 12
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Ayuda para Convertir sentencia sql con group by a un Bloque anonimo

Publicado por roberto (5 intervenciones) el 14/06/2019 21:41:50
Excelente jeffry,
solo creo que tu titulo de 'Dólar' nomas esta mal , porque segun entiendo son diferentes monedas. cierto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Ayuda para Convertir sentencia sql con group by a un Bloque anonimo

Publicado por Jeffry (4 intervenciones) el 14/06/2019 21:42:53
Cierto es Moneda, la emoción me hizo olvidar el cambio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar