una transponer tabla subtotales porcentaje para los filas ejemplo dinĂ¡mica dinamica diferencia convertir comparacion columnas calcular sql oracle oracle11g

sql - transponer - Calcule la diferencia entre el valor en diferentes filas y columnas



sql transponer columnas a filas (1)

Por favor, ayúdame a resolver la consulta a continuación. Supongamos que tengo un nombre de tabla como Datos con 3 filas: Fecha1, Fecha2 y ventana de visita. Necesito calcular el valor de la ventana de visita. Debe ser la diferencia de (n + 1) la fila de la fecha 1 y la n-ésima fila de la fecha2. Por ejemplo: Diferencia del valor de la segunda fila de la Fecha1 y la primera fila del valor de la fecha2 dividido entre 7. Por favor, ayuda.

Table: Data ------------ Date1 Date2 VW 13-DEC-2011 15-DEC-2011 ? 18-DEC-2011 16-DEC-2011 ? 21-DEC-2011 24-DEC-2011 ?

Gracias


select Date1, Date2, lead(Date1) over (order by Date1) next_date1, ((lead(Date1) over (order by Date1)) - Date2)/7 as Diff From DATA_TABLE

Para la última fila no obtendrá ningún VW, porque no hay n + 1 Fecha1.

lead(column) devuelve el valor para el parámetro de column de la siguiente fila como se especifica en la cláusula over .

Puede encontrar ejemplos y otras funciones similares aquí .

ACTUALIZACIÓN (respuesta a un comentario de pregunta - cómo comparar con otra columna)

select Date1, Date2, Diff, another_column, CASE when Diff < another_column then ''it is lower'' when Diff > another_column then ''it is higher'' when Diff = another_column then ''are equal'' END as comparation, CASE when round(diff -another_column,3) = 0 then ''almost equal'' else ''definitely not equal'' END as rounded_comparation from( select Date1, Date2, lead(Date1) over (order by Date1) next_date1, ((lead(Date1) over (order by Date1)) - Date2)/7 as Diff, another_column From DATA_TABLE )