SQL Server - comparación tablas

   
Vista:

comparación tablas

Publicado por Paola (13 intervenciones) el 09/04/2015 16:10:49
Hola, mi consulta es la siguiente, tengo dos tablas con las mismas columnas:
Fecha y hora
Prefijo
Numero
Monto

Lo que debo hacer es unir los campos prefijo y numero ( en las dos tablas) y luego comparar ese campo que ya esta unido con los campos de la otra tabla y que me muestre cual es el campo faltante. Es decir prefijo + + numero de la tabla1 prefijo + + numero de la tabla2 y después comparar ambas tablas y que me muestre el campo que no esta sea que falte en la tabla1 o en la tabla2, espero a ver sido clara, espero me ayuden,gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

comparación tablas

Publicado por Isaias (3181 intervenciones) el 09/04/2015 17:08:14
¿En que MOTOR DE BASE DE DATOS?

Y una muestra de tus datos, no nos vendría nada mal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comparación tablas

Publicado por Paola (13 intervenciones) el 09/04/2015 17:41:14
En SQL server 2012

Un ejemplo de la tabla1 seria

Fecha y hora Prefijo Numero monto
15/03/15 12.00 11 4152500 10
15/03/15 12.50 11 3000001 20
13/03/15 13.40 341 204040 15
15/09/15 15.40 351 252560 10

Ejemplo tabla2

Fecha y hora Prefijo Numero monto
15/03/15 12.00 11 4152500 10
15/03/15 12.50 11 3000001 20
15/09/15 15.40 351 252560 10

Lo que necesito hacer es unir los campos prefijo y numero de la tabla1 y ordenarlos de forma ascendente, luego unir los campos prefijo y numero de la tabla2 y ordenarlos de forma ascendente. Luego debo comparar la tabla1 y la tabla2 y que me muestro cual es el dato faltan,en este ejemplo que envio deberia mostrarme 341204040 que seria el prefijo 341 mas el numero 204040 que es el dato que de encuentra faltante en la tabla2, aguardo su ayuda,gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

comparación tablas

Publicado por Isaias (3181 intervenciones) el 09/04/2015 20:29:36
Nota: Cuando envíes datos, envíalos de forma como deben ingresar a SQL, nos evitas mucho trabajo

1
2
3
4
5
6
7
8
9
10
11
DROP TABLE #T1
CREATE TABLE #T1 (fecha date, hora time, prefijo int, numero int, monto money)
INSERT INTO #T1 VALUES('20150315', '12:00', 11, 4152500, 10)
INSERT INTO #T1 VALUES('20150315', '12:50', 11, 3000001, 20)
INSERT INTO #T1 VALUES('20150313', '13:40', 341, 204040, 15)
INSERT INTO #T1 VALUES('20150913', '15:40', 351, 252560, 10)
DROP TABLE #T2
CREATE TABLE #T2 (fecha date, hora time, prefijo int, numero int, monto money)
INSERT INTO #T2 VALUES('20150315', '12:00', 11, 4152500, 10)
INSERT INTO #T2 VALUES('20150315', '12:50', 11, 3000001, 20)
INSERT INTO #T2 VALUES('20150915', '15:40', 351, 252560, 10)


Lo que necesito hacer es unir los campos prefijo y numero de la tabla1 y ordenarlos de forma ascendente,
luego unir los campos prefijo y numero de la tabla2 y ordenarlos de forma ascendente.
Luego debo comparar la tabla1 y la tabla2 y que me muestro cual es el dato faltan,
en este ejemplo que envio deberia mostrarme 341204040 que seria el prefijo 341 mas el numero 204040
que es el dato que de encuentra faltante en la tabla2, aguardo su ayuda,gracias

1
2
3
4
SELECT #T1.*, #T2.* FROM #T1 
FULL JOIN #T2 ON #T1.prefijo = #T2.prefijo
AND #T1.numero = #T2.numero
WHERE #T2.prefijo IS NULL


fecha hora prefijo numero monto fecha hora prefijo numero monto
2015-03-13 13:40:00.0000000 341 204040 15.00 NULL NULL NULL NULL NULL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comparación tablas

Publicado por Paola (13 intervenciones) el 10/04/2015 01:24:30
Perfecto, gracias, ahora realizo la ultima consulta, si agregamos el campo proveedor, ¿como hago para que solo me muestre los de un proveedor en particular ? Paso el ejemplo:

DROP TABLE #T1
CREATE TABLE #T1 (fecha date, hora time, prefijo int, numero int, monto money, proveedor varchar)
INSERT INTO #T1 VALUES('20150315', '12:00', 11, 4152500, 10, ypf)
INSERT INTO #T1 VALUES('20150315', '12:50', 11, 3000001, 20, shell)
INSERT INTO #T1 VALUES('20150313', '13:40', 341, 204040, 15, ypf)
INSERT INTO #T1 VALUES('20150913', '15:40', 351, 252560, 10, shell)
DROP TABLE #T2
CREATE TABLE #T2 (fecha date, hora time, prefijo int, numero int, monto money, proveedor varchar)
INSERT INTO #T2 VALUES('20150315', '12:00', 11, 4152500, 10, ypf)
INSERT INTO #T2 VALUES('20150315', '12:50', 11, 3000001, 20, ypf)
INSERT INTO #T2 VALUES('20150915', '15:40', 351, 252560, 10, ypf)

Es decir la tabla t1 contiene los datos de todos los proveedores, y la tabla t2 los datos de un proveedor en particular
La consulta sería, comparar los campos de la tabla t1 donde el proveedor sea ypf y compararlos con la tabla t2 que contiene todos los datos de ese proveedor, espero se entienda la consulta, gracias!

Es decir, este caso, solo deberia compararme los campos de la tabla t1 donde el proveedor sea ypf, con todos los campos de la tabla t2, en este caso particular deberia solamente mostrarme prefijo 341 numero 204040 proveedor ypf
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

comparación tablas

Publicado por Isaias (3181 intervenciones) el 10/04/2015 17:50:29
¿llevas algún avance?, muestralo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comparación tablas

Publicado por Paola (13 intervenciones) el 10/04/2015 17:54:27
No, porque no se como hacer para que solo me muestre los del proveedor que elijo, recién empiezo con SQL, por eso consulto, gracias!
Pude realizar la consulta pero me muestra todos los proveedores, aguardo me ayude
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

comparación tablas

Publicado por Isaias (3181 intervenciones) el 10/04/2015 21:09:30
Con muchísimo gusto, muéstrame lo que llevas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comparación tablas

Publicado por Paola (13 intervenciones) el 13/04/2015 21:45:09
Bien, ahi va, primero cree la base de datos, luego las tablas y luego realice la consulta.

use base
go

create table t1 (
fechaproc date,
operadorproceso varchar(50),
monto int(3),
prefijo int(5),
numero int(10),
);

BULK INSERT t1 FROM 'C:\tabla1.csv'
WITH
(
-- seteamos el separador de campos
FIELDTERMINATOR = ';',
--seteamos el separador de registro
ROWTERMINATOR = '\n'
);
GO


create table t2 (
fechaproc date,
operadorproceso varchar(50),
monto int(3),
prefijo int(5),
numero int(10),
);

BULK INSERT t2 FROM 'C:\tabla2.csv'
WITH
(
-- seteamos el separador de campos
FIELDTERMINATOR = ';',
--seteamos el separador de registro
ROWTERMINATOR = '\n'
);
GO

Es decir la tabla t1 contiene los datos de todos los proveedores, y la tabla t2 los datos de un proveedor en particular
La consulta sería, comparar los campos de la tabla t1 donde el proveedor sea ypf y compararlos con la tabla t2 que contiene todos los datos de ese proveedor, espero se entienda la consulta, gracias!

Es decir, este caso, solo deberia compararme los campos de la tabla t1 donde el proveedor sea ypf, con todos los campos de la tabla t2.

Debo unir los campos prefijo y numero y luego realizar la consulta pero que solo me muestre los datos del proveedor elegido, es ahi donde nose como hacerlo, intente poner where operadorproceso='ypf' pero me da error.

//consulta

SELECT t2.*, t1.* FROM t2
FULL JOIN t1 ON t2.prefijo = t1.prefijo
AND t2.numero = t1.numero
WHERE t1.prefijo IS NULL
order by t2.operadorproceso asc

Aguardo su ayuda. Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

comparación tablas

Publicado por Isaias (3181 intervenciones) el 13/04/2015 23:53:02
SELECT t2.*, t1.* FROM t2
FULL JOIN t1 ON t2.prefijo = t1.prefijo
AND t2.numero = t1.numero
WHERE t1.prefijo IS NULL
AND operadorproceso='ypf' -- <------- Este es el nuevo filtro
order by t2.operadorproceso asc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comparación tablas

Publicado por Paola (13 intervenciones) el 14/04/2015 01:34:06
Muchisimas gracias, excelente!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

comparación tablas

Publicado por Isaias (3181 intervenciones) el 14/04/2015 18:15:37
Me intriga saber cual es tu nivel de conocimientos en SQL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar