Consulta con operaciones

27/05/2004 - 11:19 por Mari P | Informe spam
Hola grupo.
No consigo solucionar lo siguiente.

Tabla = t1
origen, destino, total_enviado

Valencia - BNC - 200
Valencia - Oviedo - 100
Valencia - Cadiz - 40
BCN - Valencia - 75
BCN - Cadiz - 32
Cadiz - BCN 100
Cadiz - Valencia - 40

Necesito sacar el diferencial por origen, es decir saber que a enviado cada
origen a destino y con cuanto se a quedado.

Un ejemplo;
Valencia a enviado a BCN 200, a Oviedo 100 y a Cadiz 40.
A recibido de BCN 75
A recibido de Cadiz 40

Resultado en otra tabla llamada Valencia
Valencia - BCN :125
Valencia - Oviedo: 100
Valencia - Cadiz: 0

No se si me he explicado.

Gracias por adelantado.

Mari.

Preguntas similare

Leer las respuestas

#1 Liliana Sorrentino
27/05/2004 - 15:55 | Informe spam
Hola, creo que esto puede servirte.
Saludos... Liliana.

SELECT t1.origen, t1.destino, ISNULL(SUM(t1.total_enviado),0) -
ISNULL(SUM(t2.total_enviado),0)
FROM #t1 t1
LEFT JOIN #t1 t2 ON t1.origen = t2.destino AND t1.destino = t2.origen
GROUP BY t1.origen, t1.destino
ORDER BY 1, 2


"Mari P" escribió en el mensaje
news:#
Hola grupo.
No consigo solucionar lo siguiente.

Tabla = t1
origen, destino, total_enviado

Valencia - BNC - 200
Valencia - Oviedo - 100
Valencia - Cadiz - 40
BCN - Valencia - 75
BCN - Cadiz - 32
Cadiz - BCN 100
Cadiz - Valencia - 40

Necesito sacar el diferencial por origen, es decir saber que a enviado


cada
origen a destino y con cuanto se a quedado.

Un ejemplo;
Valencia a enviado a BCN 200, a Oviedo 100 y a Cadiz 40.
A recibido de BCN 75
A recibido de Cadiz 40

Resultado en otra tabla llamada Valencia
Valencia - BCN :125
Valencia - Oviedo: 100
Valencia - Cadiz: 0

No se si me he explicado.

Gracias por adelantado.

Mari.






Respuesta Responder a este mensaje
#2 Javier Loria
27/05/2004 - 16:13 | Informe spam
Hola:
Si usas SQL 2000 no necesitas tablas sino que con una funcion INLINE te
basta
==CREATE FUNCTION DiferencialPorOrigen
( @Lugar VARCHAR(30))
RETURNS TABLE
AS
SELECT Salidas.Destino, Salidas.TotalEnviado+Entradas.TotalEnviado
FROM (SELECT Destino, -TotalEnviado
FROM T1
WHERE Origen=@Lugar) AS Salidas
JOIN (SELECT Origen, TotalEnviado
FROM T1
WHERE Destino=@Lugar) AS Entradas
ON Salidas.Destino=Entradas.Origen
== Estas funcion asume que todas las ciudades estan en ambas origen y
destino, pero puede cambiarse facilmente con un CROSS JOIN, y COALESCE por
si acaso hay nulos.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Mari P escribio:
Hola grupo.
No consigo solucionar lo siguiente.

Tabla = t1
origen, destino, total_enviado

Valencia - BNC - 200
Valencia - Oviedo - 100
Valencia - Cadiz - 40
BCN - Valencia - 75
BCN - Cadiz - 32
Cadiz - BCN 100
Cadiz - Valencia - 40

Necesito sacar el diferencial por origen, es decir saber que a
enviado cada origen a destino y con cuanto se a quedado.

Un ejemplo;
Valencia a enviado a BCN 200, a Oviedo 100 y a Cadiz 40.
A recibido de BCN 75
A recibido de Cadiz 40

Resultado en otra tabla llamada Valencia
Valencia - BCN :125
Valencia - Oviedo: 100
Valencia - Cadiz: 0

No se si me he explicado.

Gracias por adelantado.

Mari.
Respuesta Responder a este mensaje
#3 Mari P
27/05/2004 - 16:55 | Informe spam
Muchas gracias a los dos.
Tengo el SQL 2000.

Probaré con la mfunción inline.

Un saludo

Mari



"Javier Loria" escribió en el mensaje
news:OBFB5T$
Hola:
Si usas SQL 2000 no necesitas tablas sino que con una funcion INLINE


te
basta
==> CREATE FUNCTION DiferencialPorOrigen
( @Lugar VARCHAR(30))
RETURNS TABLE
AS
SELECT Salidas.Destino, Salidas.TotalEnviado+Entradas.TotalEnviado
FROM (SELECT Destino, -TotalEnviado
FROM T1
WHERE Origen=@Lugar) AS Salidas
JOIN (SELECT Origen, TotalEnviado
FROM T1
WHERE Destino=@Lugar) AS Entradas
ON Salidas.Destino=Entradas.Origen
==> Estas funcion asume que todas las ciudades estan en ambas origen y
destino, pero puede cambiarse facilmente con un CROSS JOIN, y COALESCE por
si acaso hay nulos.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Mari P escribio:
> Hola grupo.
> No consigo solucionar lo siguiente.
>
> Tabla = t1
> origen, destino, total_enviado
>
> Valencia - BNC - 200
> Valencia - Oviedo - 100
> Valencia - Cadiz - 40
> BCN - Valencia - 75
> BCN - Cadiz - 32
> Cadiz - BCN 100
> Cadiz - Valencia - 40
>
> Necesito sacar el diferencial por origen, es decir saber que a
> enviado cada origen a destino y con cuanto se a quedado.
>
> Un ejemplo;
> Valencia a enviado a BCN 200, a Oviedo 100 y a Cadiz 40.
> A recibido de BCN 75
> A recibido de Cadiz 40
>
> Resultado en otra tabla llamada Valencia
> Valencia - BCN :125
> Valencia - Oviedo: 100
> Valencia - Cadiz: 0
>
> No se si me he explicado.
>
> Gracias por adelantado.
>
> Mari.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida