Cuestión : SQL

Quisiera poner al día la 2da fila que tiene actual 0 con el promedio de 145 y 165 o las filas sobre y debajo de cualquier campo que tenga un valor cero.  Quiero substituir un valor cero por el aveage de los campos sobre y debajo del field.
Currently puedo pensar solamente para utilizar un CURSOR y un movimiento arriba y abajo de la tabla que realiza la matemáticas del
Field2 = (field1 + field3) * .5 que el valor cero se puede separar a través de la tabla de column.
The tendrá solamente 24 expedientes pues es el total basado sobre la hora de día.
Volume
145
0
165
class= del

Respuesta : SQL

Eso debe haber sido

tbl de la actualización
fijar el volumen = (el avg selecto (b.volume) del tbl b donde b.hr=tbl.hr-1 o b.hr=tbl.hr+1)
donde volumen = 0

Esto es demasiado simplista sin embargo, pero puede adaptarse a sus necesidades. Es simplista porque:

Si su primera hora tiene 0, copiará el valor directo a partir de la hora próxima puesto que no hay datos anteriormente.
Si usted tiene ceros dos o más consecutivos, usted terminará para arriba con un ciertos datos valorados bajos.  Ver este ejemplo de antes o después de.

Hora/antes o después de
0/10/10
1/0/5
2/0/0
3/0/15
4/30/30
5/10/10
6/0/15
7/20/20
Otras soluciones  
 
programming4us programming4us