Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/11/2007, 15:12
MarioHeredia
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 17 años, 3 meses
Puntos: 3
Re: Seleccionar Cambio Entre Campos

Hola nuevo wako13...

Te propongo una solucion usando "ventanas logicas"...

Código:
DROP TABLE WAKO PURGE;

CREATE TABLE WAKO
(
FECHA DATE,
CAMPO VARCHAR2(5)
) TABLESPACE AUXILIAR PCTFREE 5 PCTUSED 95;

INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -10, 'VAL_1');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -9, 'VAL_1');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -8, 'VAL_2');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -7, 'VAL_1');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -6, 'VAL_1');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -5, 'VAL_2');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -4, 'VAL_1');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -3, 'VAL_1');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -2, 'VAL_2');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE) -1, 'VAL_1');
INSERT INTO WAKO VALUES (TRUNC(SYSDATE), 'VAL_1');

COMMIT;


SELECT FECHA,
       CAMPO
  FROM (
SELECT FECHA,
       CAMPO,
       LAG(FECHA,1) OVER(ORDER BY FECHA DESC) FECHA_MANIANA,
       LAG(CAMPO,1) OVER(ORDER BY FECHA DESC) CAMPO_MANIANA FROM WAKO
       )
 WHERE CAMPO <> CAMPO_MANIANA
 ORDER BY FECHA;
Como ves solo muestra las diferencias, toda la magia aparece cuando usas las funciones LAG y LEAD que son muy potentes debido a que como en este ejemplo, puedes traer el valor de un registro en formato diferido por asi decirlo.

Cualquier duda, me dices...

Suerte y nos vemos.

Sldo Mario.