SQL Server - Join a dos tablas distintas con un resultado en una sola columna

   
Vista:

Join a dos tablas distintas con un resultado en una sola columna

Publicado por Luis Miguel Aza (1 intervención) el 29/10/2014 22:25:24
Buenas tardes muchas gracias por la colaboracion que me puedan brindar.

datos del problema tengo un conjunto de inner y left join para traer los datos de una consulta, el dato para unir las tablas es un campo llamado iddoc Y destinodocumentoiddoc, el problema radica en que necesito llamar dos tablas distintas esto depende del tipo del documento y mostrar un codigo de las dos tablas en una sola columna este es el query.

OT llama en IV_ItemInventario
EC llama en CO_ItemDeCompra

SELECT d1.IdDoc, d1.Prefijo +' '+d1.NumeroDocumento AS NumeroDocumento, d1.Fecha,h1.DestinoDocumentoIdDoc,d3.Fecha,d3.Prefijo+' '+ d3.NumeroDocumento as NumeroEntrada, ii7.CodigoPortafolio,i9.CodigoPortafolio
FROM GN_Documento AS d1
INNER JOIN CO_OrdenDeCompra AS d2
ON d1.IdDoc = d2.IdDoc
LEFT JOIN GN_DocumentoHistoria h1
ON d1.IdDoc = h1.IdDoc
LEFT JOIN GN_Documento as d3
ON h1.DestinoDocumentoIdDoc = d3.Iddoc
LEFT JOIN IV_ItemInventario as ii7
ON h1.DestinoDocumentoIdDoc = ii7.IdDoc
LEFT JOIN CO_ItemDeCompra as i9
ON h1.DestinoDocumentoIdDoc = i9.IdDoc
where d1.codigoestado='704' and d1.Fecha >= '2014-02-01' and d1.Fecha < '2014-05-01'
order by d1.IdDoc

y este el resultado

/iddoc//numerodocumento//fecha//DestinoDocumentoIdDoc//fecha//numerodocumento//codigo1//codigo2
586391 /OC 10306 /2014-02-01 00:00:00 /597671 /2014-02-01 00:00:00 /EC 8525 /NULL /H2F44AA#ABL
594765 / OC 10421 /2014-02-05 00:00:00 /595745 /2014-02-06 00:00:00 /EC 8483 /NULL /UC245E
594767 /OC 10422 /2014-02-05 00:00:00 /596514 /2014-02-06 00:00:00 /EC 8493 /NULL /U6E99E
594984 / OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155 /704558-001/ NULL
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155 /652589-B21 /NULL
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155 /652611-B21/ NULL
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155 /718359-B21/ NULL
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155 /C9E49AA /NULL


y lo que quiero seria

IDDOC / NUM DOC / FECHA / IDDOC ORIGEN / FECHA / NUMERO /CODIGO1-2
586391 /OC 10306 /2014-02-01 00:00:00 /597671 /2014-02-01 00:00:00/EC 8525/ H2F44AA#ABL
594765 /OC 10421 /2014-02-05 00:00:00 /595745 /2014-02-06 00:00:00 /EC 8483 /UC245E
594767 /OC 10422 /2014-02-05 00:00:00 /596514 /2014-02-06 00:00:00 /EC 8493 /U6E99E
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155/704558-001
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155/ 652589-B21
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155/ 652611-B21
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155/ 718359-B21
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155/ C9E49AA
594984 /OC 10423 /2014-02-05 00:00:00 /606268 /2014-03-07 00:00:00 /OT 6155/ J9729A


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

Join a dos tablas distintas con un resultado en una sola columna

Publicado por Hugo qn (18 intervenciones) el 05/11/2014 20:15:22
hola Luis, verifica la tabla 2 que tenga las llaves primarias que tiene la tabla 1

...
from
tabla1
Left Join tabla2 on (tabla1.codigo = tabla2.codigo)

tabla1
codigo, nombre
00001, nombreproducto1
00002, nombreproducto2
00003, nombreproducto3

tabla2
codigo, precio
00001, 10.99
00002, 15.50

el resultado mostrará
codigo, nombre, precio
00001, nombreproducto1, 10.99
00002, nombreproducto1, 15.50
00003, nombreproducto3, null

si le pones inner join el resultado será

codigo, nombre, precio
00001, nombreproducto1, 10.99
00002, nombreproducto1, 15.50

espero te sirva.

saludos.
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