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

Consulta sobre sql en server 2000

Estas en el tema de Consulta sobre sql en server 2000 en el foro de SQL Server en Foros del Web. Comunidad, buenas tardes, requiero de su asesoría para generar un script sql, que me permita lo siguiente: Tengo una tabla que tiene los campos codigo, ...
  #1 (permalink)  
Antiguo 02/03/2016, 15:32
 
Fecha de Ingreso: septiembre-2015
Mensajes: 39
Antigüedad: 8 años, 7 meses
Puntos: 0
Información Consulta sobre sql en server 2000

Comunidad, buenas tardes, requiero de su asesoría para generar un script sql, que me permita lo siguiente:

Tengo una tabla que tiene los campos codigo, nombre, linea, caso1, caso2, caso3, tarea1, tarea2, tarea3

Necesito que me orienten para construir una sentencia sql que tenga los campos codigo, nombre, linea, casos, tareas

De tal manera que en la columna casos y en la columna resultados se copien sus similares de caso1, caso2, caso3 y tarea1, tarea2, tarea3

tabla original
codigo│nombre│linea│caso1│caso2│caso3│tarea1│tarea 2│tarea3
001 │ luis │472 │44 │98 │11 │apr │ext1 │ten
002 │ juan │473 │56 │97 │15 │ext │gro │new

tabla final
codigo│nombre│linea│casos│tareas
001 │ luis │472 │44 │apr
001 │ luis │472 │98 │ext1
001 │ luis │472 │11 │ten
002 │ juan │473 │56 │ext
002 │ juan │473 │97 │gro
002 │ juan │473 │15 │new

Agradezco los aportes que me puedan brindar para la resolución de este script.

Tengo un servidor sql server 2000.

Gracias
  #2 (permalink)  
Antiguo 02/03/2016, 15:43
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta sobre sql en server 2000

Aqui podrias hacer un while, cursor o algo para recorrer todos los valores de la tabla e ir armando tu propia tabla de salida, esto porque no existen las funciones pivot en sql2000, seria algo como esto:
Código SQL:
Ver original
  1. DECLARE @x INT
  2. DECLARE @nombre VARCHAR(200)
  3. DECLARE @codigo VARCHAR(20)
  4. DECLARE @linea INT
  5. DECLARE @caso INT
  6. DECLARE @tarea Nvarchar(20)
  7. SET @x=1
  8.  
  9. SELECT *,(IDENTITY,1,1) AS rn INTO #temp FROM tabla
  10.  
  11. while (@x<=(SELECT COUNT(*) FROM #temp) )
  12. BEGIN
  13.    IF(SELECT isnull(caso1,'') FROM #temp WHERE rn=@x)<>'' AND  (SELECT isnull(tarea1,'') FROM #temp WHERE rn=@x <>'') )
  14.     BEGIN
  15.         SELECT @codigo=codigo,@nombre=nombre, @linea=linea,@caso=caso1, @tarea=tarea1 FROM tabla WHERE rn=@x
  16.         INSERT INTO resultados VALUES (@codigo,@nombre,@linea,@caso,@tarea)
  17.    END
  18.    
  19.    IF(SELECT isnull(caso2,'') FROM #temp WHERE rn=@x)<>'' AND  (SELECT isnull(tarea2,'') FROM #temp WHERE rn=@x <>'') )
  20.     BEGIN
  21.         SELECT @codigo=codigo,@nombre=nombre, @linea=linea,@caso=caso2, @tarea=tarea2 FROM tabla WHERE rn=@x
  22.         INSERT INTO resultados VALUES (@codigo,@nombre,@linea,@caso,@tarea)
  23.    END
  24.    
  25.    IF(SELECT isnull(caso3,'') FROM #temp WHERE rn=@x)<>'' AND  (SELECT isnull(tarea3,'') FROM #temp WHERE rn=@x <>'') )
  26.     BEGIN
  27.         SELECT @codigo=codigo,@nombre=nombre, @linea=linea,@caso=caso3, @tarea=tarea3 FROM tabla WHERE rn=@x
  28.         INSERT INTO resultados VALUES (@codigo,@nombre,@linea,@caso,@tarea)
  29.    END
  30.    
  31. SET @x=@x+1
  32. END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 02/03/2016 a las 15:57

Etiquetas: consulta-sql, querys, scripts, sql
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 19:20.