Saca los números mayores a 5000 mediante una consulta de SQL

Que tal tengo un problema necesito sacar los números mayores a 5000 con una consulta de sql tengo una tabla que se llama Recorrido en la cual tengo los datos de recorrido de varios vehículos como son Placas, Modelo, Kilómetros por mes (Enero, Febrero, Marzo, etc), lo que hago es tomar el kilometraje de enero y el de febrero, ahí realizo una resta para saber que kilometraje tiene digamos Enero 82345, Febrero 83560 y lo resto así 83560 - 82345 el resultado lo guardo en una campo que se llama Total_KM1 y así sucesivamente Febrero 83560 Marzo 85679 resta 83560 - 85679, esto lo tengo ya en un formulario y lo hace automáticamente con código de VB lo que hago para que me muestre solo los mayores a 5000 en una consulta de sql es lo siguiente.

SELECT No_Economico, Placas, Total_KM1 + Total_Km2 AS total, Total_KM2 + Total_Km3 AS total1, Total_KM3 + Total_Km4 AS total2, Total_KM4 + Total_Km5 AS total3, Total_KM5 + Total_Km6 AS total4, Total_KM6 + Total_Km7 AS total5, Total_KM7 + Total_Km8 AS total6, Total_KM8 + Total_Km9 AS total7, Total_KM9 + Total_Km10 AS total8, Total_KM10 + Total_Km11 AS total9, Total_KM11 + Total_Km12 AS total10
FROM Recorrido
WHERE Total_KM1 + Total_Km2 >= 5000 OR Total_KM2 + Total_Km3 >= 5000 OR Total_KM3 + Total_Km4 >= 5000 OR Total_KM4 + Total_Km5 >= 5000 OR Total_KM5 + Total_Km6 >= 5000 OR Total_KM6 + Total_Km7 >= 5000 OR Total_KM7 + Total_Km8 >= 5000 OR Total_KM8 + Total_Km9 >= 5000 OR Total_KM9 + Total_Km10 >= 5000 OR Total_KM10 + Total_Km11 >= 5000 OR Total_KM11 + Total_Km12 >= 5000;

El problema es que me muestra también los menores a 5000 no se si esta mal mi consulta o lo tengo que hacer en VB ojala me puedan ayudar

1

1 respuesta

Respuesta
1

Estimado por que vuelves a indicar cada operación + en la consulta where. Simplemente debes hacer el where sobre los títulos de los campos asignados.

WHERE total1>4999 and total2>4999 and total3>4999 and total4>4999 and total5>4999 and total6>4999 and total7>4999 and total8>4999 and total9>4999 and total10>4999;

Esta condición hace que todos los totales cumplan que sean mayores a 4999 o sea de 5000 en adelante.

La consulta que tu has hecho admite que si el segundo valor es superior o igual a 5000 te va a mostrar los datos aun cuando puede que total1 sea menos a 5000. Por eso es que te sigue mostrando valores inferiores. recuerda la tabla de verdad V o F = V.

Total2 or total2 >=5000 verdadero

4855 or 5004 >=5000 Verdadero. Esto permite que muestre el registro.

En cambio lo que yo planteo

4855 and 5004>=5000 falso. V And F= Falso.

ok entiendo pero en mi select tengo esto:

No_Economico, Placas, Total_KM1 + Total_Km2 AS total, Total_KM2 + Total_Km3 AS total1, Total_KM3 + Total_Km4 AS total2, Total_KM4 + Total_Km5 AS total3, Total_KM5 + Total_Km6 AS total4, Total_KM6 + Total_Km7 AS total5, Total_KM7 + Total_Km8 AS total6, Total_KM8 + Total_Km9 AS total7, Total_KM9 + Total_Km10 AS total8, Total_KM10 + Total_Km11 AS total9, Total_KM11 + Total_Km12 AS total10

cuando pongo lo que me indicaste en mi where al correr la consulta me dice que introduzca el aprametro de total, total1, total2, total3, etc. Esto como vez lo tengo con un AS en cada suma que debo hacer para saber si ya tienen 5000 km, que puedo hacer para que no me salga eso del parametro

Ha ok, si no había pensado en eso, porque al correr la consulta aun no he reconocido esos campos, entonces has lo mismo pero con el cálculo (Total_KM3 + Total_Km4)>4999 And ...

Con eso podrás hacerlo.

Con eso si queda no me pide mas el parametro, pero creo que cuando pongo AND se deben de cumplir las condiciones para que me de el resultado si yo tengo tan solo 1 que cumpla los 5000 no me lo va a mostrar porque necesita que los demás la cumplan lo que necesito es si solo uno cumple la condición me lo muestre porque pongo con AND y no me muestra nada y si le pongo OR me saca los menores aun mira lo deje así

SELECT No_Economico, Placas, Total_KM1 + Total_Km2 AS total, Total_KM2 + Total_Km3 AS total1, Total_KM3 + Total_Km4 AS total2, Total_KM4 + Total_Km5 AS total3, Total_KM5 + Total_Km6 AS total4, Total_KM6 + Total_Km7 AS total5, Total_KM7 + Total_Km8 AS total6, Total_KM8 + Total_Km9 AS total7, Total_KM9 + Total_Km10 AS total8, Total_KM10 + Total_Km11 AS total9, Total_KM11 + Total_Km12 AS total10
FROM Recorrido
WHERE (Total_KM1 + Total_Km2)>4999 and (Total_Km2 + Total_Km3)>4999 and (Total_Km3 + Total_Km4)>4999 and (Total_Km4 + Total_Km5)>4999 and (Total_Km5 + Total_Km6)>4999 and (Total_Km6 + Total_Km7)>4999 and (Total_Km7 + Total_Km8)>4999 and (Total_Km8 + Total_Km9)>4999 and (Total_KM9 + Total_Km10)>4999 and (Total_Km10 + Total_Km11)>4999 and (Total_Km11 + Total_Km12)>4999;

Claro, deben cumplirse todas las condiciones, porque era lo que me pediste con el OR pasaba que mostraba registros que en algunos totales data sobre 5000 y en el mismo registro menos de 5000 e igual forma lo mostraba.

Tu idea era que no mostrara registros con valores inferiores a 5000 verdad.

entonces no se puede que me muestre los menores solo con un dato que se cumple sin mostrar los menores a 5000 o esconder los menores a 5000 que aparezca vacío en donde esta un numero menor a 5000

Si en el registro existe aunque sea uno que sea menor a 5000 entonces no podrás.

Solo si todos los campos en el registro cumplan con la condición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas