PDA

Ver la Versión Completa : Reorganizar datos de una tabla


Neeruu
29-10-2014, 00:19:55
Hola a todos...

Antes que nada, aclaro que no se bien que titulo ponerle al post.. si alguien se le ocurre otro nombre me dice y lo cambio

Necesito ayuda para poder acomodar los datos de la siguiente manera...
Puede ser en una consulta o procedimiento.... se me están quemando las pestañas y no encuentro la forma de hacerlo.

Tengo una tabla con los siguientes datos.


1-->valor1-->0
2-->valor2-->0
3-->valor3-->0
4-->valor4-->0
5-->0-->valor5
6-->0-->valor6


Cantidad de filas puede variar.

Y yo necesito obtener de alguna forma los datos de la siguiente manera.


1-->valor1-->valor5
2-->valor2-->valor6
3-->valor3-->0
4-->valor4-->0


Otro caso que se puede dar


1-->valor1-->valor3
2-->valor2-->valor4
5-->0 -->valor5
6-->0 -->valor6


El orden de los datos es indiferente....

Desde ya muchas gracias.

Saludos Atte Neeruu!!!:)

ecfisa
29-10-2014, 05:12:55
Hola Neruu.

Sinceramente no entiendo la relación entre los datos ni la lógica de la reorganización, ¿ Podrías exponerlo con mas detalle ?

Saludos :)

Neeruu
29-10-2014, 05:32:40
Hola, esto es, a grandes rasgos lo que tengo que hacer....

Esto es lo que tengo que hacer.... (http://www.forosdelweb.com/f86/trasponer-resultados-consulta-1010228/)

Espero que se entienda...

Mirar el comentario 4 de leonardo_josue Link (http://www.forosdelweb.com/f86/trasponer-resultados-consulta-1010228/#post4258833)


Saluda Atte Neeruu...:)

Neftali [Germán.Estévez]
29-10-2014, 10:12:26
¿Y cual es el problema?
Justamente tú has dado la solución en ese último link.
:confused::confused:

fjcg02
29-10-2014, 13:44:14
Hola,
en este caso sólo tienes que hacer una inner join de la tabla consigo misma con los campos apropiados.

select T1.*, T2.Campo3 from tabla T1
inner join tabla T2 on ( T1.Campo3 = T2.Campo2 )

y a correr...

Saludos

Neeruu
30-10-2014, 01:07:19
Estuve probando con el inner join y resulta que obtengo resultados repetidos....

Supongamos que de un lado del join tengo 3 registros y del otro lado del 2 registros

Datos Originales


id Debe Haber
1-->1-->valor1-->0
2-->1-->valor2-->0
3-->1-->valor3-->0
4-->1-->valor4-->0
5-->1-->0-->valor5
6-->1-->0-->valor6


Yo necesito que el resultado final sea de esta forma

1-->valor1-->valor5
2-->valor2-->valor6
3-->valor3-->0
4-->valor4-->0


Pero obtengo esto:

1-->valor1-->valor5
2-->valor1-->valor6
2-->valor2-->valor5
2-->valor2-->valor6
3-->valor3-->valor5
3-->valor3-->valor6
4-->valor4-->valor5
4-->valor4-->valor6


La consulta que estoy haciendo es la siguiente

SELECT T1.DEBE
, T2.HABER
FROM TABLA T1
INNER JOIN (SELECT T2.HABER
FROM TABLA T2
WHERE T2.ID = 1
AND T2.HABER <> 0) AS T2
ON(T1.ID = T2.ID)
WHERE T1.ID = 1
AND T1.DEBE <> 0

Neeruu
30-10-2014, 03:54:01
Después de muchas pruebas y pruebas encontré la solución.

Lo que hago es cargar una tabla temporal ajustando los datos para poder hacer correctamente el inner join... (Entendí donde estaba mi error en la logica...)

Gracias por sus comentarios

Saluda Atte Neeruu!!! :)