Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Poltergeist en Transact-SQL

Estas en el tema de Poltergeist en Transact-SQL en el foro de SQL Server en Foros del Web. Tengo esta consulta: Select F.IdFlota, F.IdEmpresaMarca, F.IdMarca, F.IdGamaSubgama, F.IdGamaSegmento, FM.* From dbo.vi_Flota F Inner Join MarcaEmpresa MI On F.IdEmpresaMarca = MI.IdEmpresa And F.IdMarca = MI.IdMarca ...
  #1 (permalink)  
Antiguo 16/06/2009, 03:36
 
Fecha de Ingreso: julio-2003
Mensajes: 120
Antigüedad: 20 años, 9 meses
Puntos: 0
Poltergeist en Transact-SQL

Tengo esta consulta:

Select F.IdFlota, F.IdEmpresaMarca, F.IdMarca, F.IdGamaSubgama, F.IdGamaSegmento,
FM.*
From dbo.vi_Flota F Inner Join
MarcaEmpresa MI
On F.IdEmpresaMarca = MI.IdEmpresa And
F.IdMarca = MI.IdMarca Inner Join
(Select * From dbo.ftbFilasInformeGIC (
1, 1, 1,
'13514' , 0)) FM On
F.IdProvincia = FM.IdClave1
Where F.IdConcesionario = '13514' And
F.FechaMatriculacion >= '01/01/2009' And
F.IdGamaSegmento = 3

Dado que estoy filtrando, en el Where, la condición F.IdGamaSegmento = 3, todas las filas resultantes debieran salir con un valor 3. Bien, no ocurre.
Pero lo más curioso del caso es que si cambio la fecha de filtro, y dejo la condición en F.FechaMatriculacion >= '01/01/2005'... el filtro se hace bien y sólo salen registros con valor 3 en la columna IdGamaSegmento.
El asunto de esta consulta es raro por muchos motivos. Por ejemplo, EL FILTRO POR FECHA SIEMPRE LO HACE BIEN, siempre salen registros de fecha posterior a la condición que ponga, pero lo curioso ES QUE EL ERROR AFECTA A OTRA COLUMNA, a F.IdGamaSegmento.
Es absurdo, o lo parece.
Otra cosa es que nos ocurre en un servidor, en el de producción, pero no en el de pruebas. En el de pruebas la sentencia SQL, ejecutada desde el Analizador de Consultas, funciona correctamente. Hemos copiado la configuración de atributos de la base de datos y es la misma en los dos sitios.
Vuelvo a repetir, me parece absurdo.

Última edición por MrRipley; 16/06/2009 a las 03:44
  #2 (permalink)  
Antiguo 16/06/2009, 04:07
 
Fecha de Ingreso: julio-2003
Mensajes: 120
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Poltergeist en Transact-SQL

Como curiosidad, y tb porque muestra que es algún problema interno del tratamiento de las variables en SQLServer.
Con todas las fechas anteriores a '27/04/2008', el filtro se hace bien; la columna IdGamaSegmento muestra sólo el valor por el que se haya filtrado. Filtrando por '28/04/2008', el filtro por IdGamaSegmento deja de tenerse en cuenta (aunque se escriba en la sql antes del filtro por FechaMatriculacion).
Igual hay que tener en cuenta que una de las joins de la tabla es una vista (que une tablas distintas y establece algunas condiciones, aunque eso no debiera ser un problema). El que otra de las joins sera una función de base de datos no afecta, porque he probado a sacar los datos a una tabla temporal y el problema es el mismo, con el mismo comportamiento para las fechas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:19.