Ver Mensaje Individual
  #7 (permalink)  
Antiguo 03/04/2013, 09:23
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Duda con Query

Este PL te recibe como parametro el mes y el concepto que tengas.

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION suma_agregada(concepto_id VARCHAR2,mes_columna NUMBER) RETURN NUMBER IS
  2. TYPE rec IS record(
  3. saldo_inicial NUMBER,
  4. enero NUMBER,
  5. febrero NUMBER,
  6. marzo NUMBER,
  7. abril NUMBER,
  8. mayo NUMBER,
  9. junio NUMBER,
  10. julio NUMBER,
  11. agosto NUMBER,
  12. septiembre NUMBER,
  13. octubre NUMBER,
  14. noviembre NUMBER,
  15. diciembre NUMBER
  16. );
  17. TYPE tabla IS TABLE OF NUMBER INDEX BY BINARY_INTEGER ;
  18. rec_var rec;
  19. suma_agrupada NUMBER := 0;
  20. v_saldo_inicial NUMBER;
  21. valores tabla;
  22. BEGIN
  23. SELECT saldo_inicial,enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre
  24. INTO rec_var
  25. FROM meses WHERE concepto = concepto_id;
  26.  
  27. v_saldo_inicial := rec_var.saldo_inicial;
  28. valores(1) := rec_var.enero;
  29. valores(2) := rec_var.febrero;
  30. valores(3) := rec_var.marzo;
  31. valores(4) := rec_var.abril;
  32. valores(5) := rec_var.mayo;
  33. valores(6) := rec_var.junio;
  34. valores(7) := rec_var.julio;
  35. valores(8) := rec_var.agosto;
  36. valores(9) := rec_var.septiembre;
  37. valores(10) := rec_var.octubre;
  38. valores(11) := rec_var.noviembre;
  39. valores(12) := rec_var.diciembre;
  40.  
  41. suma_agrupada := v_saldo_inicial;
  42. FOR i IN REVERSE 1..mes_columna  loop
  43. suma_agrupada := suma_agrupada + valores(i);
  44. END LOOP;
  45. RETURN suma_agrupada;
  46. END;
  47. /

Para usarlo sería así:
Código SQL:
Ver original
  1. SELECT
  2. concepto,
  3. suma_agregada(concepto,1) enero,
  4. suma_agregada(concepto,2) febrero,
  5. suma_agregada(concepto,3) marzo
  6. FROM meses;

Los meses que quieras.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming