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

Recorrer tabla y comparar campos

Estas en el tema de Recorrer tabla y comparar campos en el foro de SQL Server en Foros del Web. Hola gente, Tengo una tabla temporal con unos 300 campos, estos capos, muchos de ellos contienen valores 0, y no me interesan No sé de ...
  #1 (permalink)  
Antiguo 10/06/2010, 04:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Recorrer tabla y comparar campos

Hola gente,

Tengo una tabla temporal con unos 300 campos, estos capos, muchos de ellos contienen valores 0, y no me interesan
No sé de que manera, puede recorrer la tabla y detectar los campos distintos de 0 para que si son distintos de 0, meterlos en otra tabla de misma base de datos.

Muchas gracias por las ideas
  #2 (permalink)  
Antiguo 10/06/2010, 08:21
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Recorrer tabla y comparar campos

Que no hayan ceros en toda la columna se supone no?
Mejor pon algun ejemplo.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 10/06/2010, 08:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Si, te pongo un ejemplo.

Tengo la tabla temporal con estos valores

Id Valor
1 1500
2 1200
3 0
4 960
5 0

Quiero pasar los datos a otra tabla que en el campo 'Valor ' no contengan ceros. quedara así´:

id Valor
1 1500
2 1200
3 960

No sé si habrá quedado claro.
  #4 (permalink)  
Antiguo 10/06/2010, 08:46
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Código SQL:
Ver original
  1. INSERT INTO OtraTabla (Id, Valor)
  2. SELECT Id, Valor
  3. FROM Tabla
  4. WHERE Valor <> 0
  #5 (permalink)  
Antiguo 10/06/2010, 12:57
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Recorrer tabla y comparar campos

De acuerdo con ROMMEL, solo cambiaria el filtro por:

WHERE Valor > 0
  #6 (permalink)  
Antiguo 10/06/2010, 13:03
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

jajaja ya estoy aprendiendo... claro!!! despues de tantas consultas que eh hecho... algo debo aprender no??? jajaja
  #7 (permalink)  
Antiguo 10/06/2010, 13:07
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Recorrer tabla y comparar campos

Todos aprendemos, bueno, al menos los que nos sobra la humildad para seguir aprendiendo, acabo de llegar de los cursos SSRS, SSIS, SSAS de 2008 y aprendi bastante.

Saludos
  #8 (permalink)  
Antiguo 10/06/2010, 13:56
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

asuu!!! yo tambien quiero aprender... (y) jejeje Saludos...!!!
  #9 (permalink)  
Antiguo 14/06/2010, 04:44
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Muchas gracias,
Se me olvido aclarar una cosilla, :), lo siento.

el nombre del campo id es dinamico, es decir en cada campo cambia de nombre.
por ejemplo-

id1
unidades: 400

id2
unidades:500

Creo que necesitaría una especie de bucle (si es posible) que podría ser:

For i= 1 to 20
select (id + i, valor)
next

Pero claro esto lo he probado y no funciona,

Es posible hacer lo que estoy proponiendo?

Gracias.
  #10 (permalink)  
Antiguo 14/06/2010, 07:45
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Bueno... yo creo que esa jugada de cambiar el nombre de la Columna... deberias hacerlo desde la aplicacion!, deja a tu consulta que trabaje normalmente... SE PUEDE? si se puede, pero entonces no necesitarias una aplicacion para programar tus algoritmos... personalmente, eso lo programaria desde mi aplicacion y le mandaria el valor que hay para cada ID... Saludos...
  #11 (permalink)  
Antiguo 14/06/2010, 07:52
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Gracias, pero ya he estado revisadando la aplicación y no va a ser posible, es una aplicación standard muy basica que no puedo tocar, por necesitad tengo que tocar el nombre de la columna.

  #12 (permalink)  
Antiguo 14/06/2010, 08:05
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

a ver dejame entender... tu tienes una tabla que tiene Columnas con nombres...

TABLA
Id1, Id2, Id3, Id4, Id5, Id6, Id7, Id8, Valor???
o
Tienes tablas
Tabla1
Id1, Valor
Tabla2
Id2, Valor
.
.
.

aun no entiendo como esta diseñada tu BD.
  #13 (permalink)  
Antiguo 14/06/2010, 08:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Tengo una tabla1 con los campos
Id1, Id2, Id3, Id4, Id5, Id6, Id7, Id8, id300, con sus valores correspondiente.
Tengo que recorrer la tabla para coger los valores de los id's que no tengan valores 0.

Pero se puede complicar aun más la cosa.
Tengo del 0 al 99 campos llamados. id1,id2,id3......id99
del 100 al 199 campos llamados unidades1, unidades2 , unidades3......... unidades99
del 200 al 299 campos llamados ocurrencias1, ocurrencias2, ocurrencias3........ ocurrencias99.

Ahora viene el reto,
Cuando encuentre un valor distinto de 0 en el campo id, por ejemplo, id3=1500, tengo que insertar en una segunda tablar, el campo id3, el campo unidades3 el campo ocurrencias3,
sigo recorriendo la tabla, encuentro otro valor distinto de 0, por ejemplo id22= 2150, tendría que insertar en la segunda tabla los campos id22, unidades22 y ocurrencias22.


Ya se puede ser complicado de entender, muchas gracias por interesarte por el tema.
  #14 (permalink)  
Antiguo 14/06/2010, 08:36
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Recorrer tabla y comparar campos

Entonces debes usar T-SQL dinamico.
Siguiendo tu ejemplo, seria:
Código SQL:
Ver original
  1. FOR @i= 1 TO 20
  2. EXEC('select (id' + CAST(@i AS VARCHAR) + ', valor) )
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #15 (permalink)  
Antiguo 14/06/2010, 08:44
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Gracias,
Estos son los errores que me encuetro, al ejecutar la sentencia

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'FOR'.
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'cast'.
  #16 (permalink)  
Antiguo 14/06/2010, 09:03
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Recorrer tabla y comparar campos

Código SQL:
Ver original
  1. SET @i = 1
  2. while @i <= 20
  3. BEGIN
  4.   EXEC('select (id' + CAST(@i AS VARCHAR) + ', valor) )
  5. end
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #17 (permalink)  
Antiguo 14/06/2010, 09:09
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Asi es como lo pongo

Código PHP:
[highlight="sql"]
declare @
as int
Insert into tabla2 
(unidades)
SET @1
while @<= 20
begin  exec
('select (id' cast(@AS varchar) + , valor) )
from tablatemporal
where unidades3 
0
end 
Estos son los errores en esta ocasión , ya ves....

Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'SET'.
Msg 137, Level 15, State 1, Line 5
Must declare the scalar variable "@i".
Msg 137, Level 15, State 2, Line 6
Must declare the scalar variable "@i".
Msg 102, Level 15, State 1, Line 7
Incorrect syntax near 'cast'.
  #18 (permalink)  
Antiguo 14/06/2010, 09:40
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
De acuerdo Respuesta: Recorrer tabla y comparar campos

Creo que ya nos estamos acercando.
Código SQL:
Ver original
  1. DECLARE @i AS INT
  2. SET @i = 1
  3. while @i <= 20
  4. BEGIN
  5. EXEC('
  6. Insert into tabla2 (unidades' + CAST(@i AS VARCHAR) + ')
  7. select id' + CAST(@i AS VARCHAR) + '
  8. from tablatemporal
  9. where id' + CAST(@i AS VARCHAR) + ' > 0'
  10. )
  11. END
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #19 (permalink)  
Antiguo 15/06/2010, 00:09
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

SI, estoy empezando a entender algo, ahora solamente tengo este error,

Muchas gracias por tu ayuda.


Msg 102, Level 15, State 1, Line 6
Incorrect syntax near 'cast'.
  #20 (permalink)  
Antiguo 15/06/2010, 07:18
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

Ahi te paso la definicion de esa funcion, yo normalmente trabajo con CONVERT jejeje Saludos
http://msdn.microsoft.com/es-es/library/ms187928.aspx
  #21 (permalink)  
Antiguo 15/06/2010, 08:05
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Recorrer tabla y comparar campos

Creo que necesitaras una variable varchar para guardar tu query dinamico, esta ira dentro del while obviamente, y la ejecutaras asi: exec( @query )
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #22 (permalink)  
Antiguo 15/06/2010, 08:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Recorrer tabla y comparar campos

ok, gracias, probaré a hacerlo de la manera que me dices

Etiquetas: campos, comparar, recorrer, tablas
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 12:28.