Datediff

14/09/2004 - 20:19 por Manolo Zepeda | Informe spam
Que tal amigos.

Tengo el siguiente procedimiento el cual calculo los
kms_recorridos de un taxi y los kms diarios.


Alter Procedure Consulta
@Id_Chofer int

As
Select
cho.Id_Mov,cho.Id_Chofer,cho.Fecha,cho.Concepto,cho.Ingreso
,cho.Egreso,cho.Kilometraje,

(Select cho.kilometraje-kilometraje from detalles_chofer
cho2 WHERE
cho.Id_chofer=cho2.id_chofer AND Cho.Id_Mov>cho2.Id_Mov)
kms_rec,

(Select (cho.kilometraje-kilometraje)/(datediff
(dd,fecha,cho.fecha)) from detalles_chofer cho2
WHERE cho.Id_chofer=cho2.id_chofer AND
Cho.Id_Mov>cho2.Id_Mov)kms_dia

from detalles_chofer Cho

'=El problema es que solo funciona cuando tengo 2 registros,
si tengo 3 me manda un error que es el siguiente.

(2 row(s) affected)

Server: Msg 512, Level 16, State 1, Procedure Consulta,
Line 5
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
Stored Procedure: Taxis.dbo.Consulta
Return Code = -6

como puedo corregir esto?

Saludos

Preguntas similare

Leer las respuestas

#1 Isaías
14/09/2004 - 20:33 | Informe spam
Hola Manolo

Alguno de estos 2 queryes regresa mas de 1 registro a la
vez.

(Select cho.kilometraje-kilometraje from detalles_chofer
cho2 WHERE
cho.Id_chofer=cho2.id_chofer AND Cho.Id_Mov>cho2.Id_Mov)
kms_rec,

(Select (cho.kilometraje-kilometraje)/(datediff
(dd,fecha,cho.fecha)) from detalles_chofer cho2
WHERE cho.Id_chofer=cho2.id_chofer AND
Cho.Id_Mov>cho2.Id_Mov)kms_dia

Si cuentas con SQL2000, considera convertirlos a UDF
(Funciones de Usuario)
Respuesta Responder a este mensaje
#2 Manolo Zepeda
14/09/2004 - 21:57 | Informe spam
Hola Isaias.

gracias por tu ayuda.

si estoy utilizando SQL2000.
como los convierto?

Saludos
Respuesta Responder a este mensaje
#3 ulises
14/09/2004 - 22:10 | Informe spam
Hum, ... yo no los convertiría a UDF, si vas a uasrlo
dentro de ese SELECT estarías procesando row-by-row cada
una de las filas de la tabla, en primer lugar consideraría
usar un JOIN pero necesitaría conocer la estructura de las
tablas para dar una mejor opinión.

Saludos,
Ulises

Hola Manolo

Alguno de estos 2 queryes regresa mas de 1 registro a la
vez.

(Select cho.kilometraje-kilometraje from detalles_chofer
cho2 WHERE
cho.Id_chofer=cho2.id_chofer AND Cho.Id_Mov>cho2.Id_Mov)
kms_rec,

(Select (cho.kilometraje-kilometraje)/(datediff
(dd,fecha,cho.fecha)) from detalles_chofer cho2
WHERE cho.Id_chofer=cho2.id_chofer AND
Cho.Id_Mov>cho2.Id_Mov)kms_dia

Si cuentas con SQL2000, considera convertirlos a UDF
(Funciones de Usuario)
.

Respuesta Responder a este mensaje
#4 Isaías
14/09/2004 - 22:31 | Informe spam
Bueno, nuestro amigo Ulises comenta que seria mejor hacer
un JOIN y me gustaria que le enviaras la estructura de tus
tablas para leer su opinion o solucion al respecto.

Saludos
Respuesta Responder a este mensaje
#5 Manolo Zepeda
15/09/2004 - 01:12 | Informe spam
Que tal Ulises.

Gracias por tu ayuda.

Es solo una tabla, aqui van los datos:

Tabla--> Detalles_Chofer
Campos Tipo
Id_Mov int
Id_Chofer int
Fecha datetime
Concepto char
Ingreso int
Egreso int
Kilometraje int

Bien... que es lo que pretendo hacer...
Tengo los sig datos:
No FECHA INGRESOS EGRESOS KILOMETRAJE kms_Reco kms_dia
1 01-04-2004 $- 50
2 16-04-2004 $1,500.00 $2,673.89 3,332 3282 219
3 02-05-2004 $900.00 6,119 2787 174
4 09-05-2004 $800.00 7,432 1313 188

Tengo que obtener los kms_reco los cuales obtengo del
ultimo registro menos el anterior, y asi sucesivamente.

Para obtener kms_dia se obtienen restando la ultima fecha
menos la anterior entre los kms_reco y asi sucesivamente.

Espero habermne explicado.

sAludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida