SQL Server - Campos de distintas tablas

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 52 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Campos de distintas tablas

Publicado por FRANCISCO (4 intervenciones) el 05/06/2020 01:44:08
Buenas a todos:
Este es mi primera consulta en el foro.


Mi problema es el siguiente.

Estoy haciendo una consulta con distintas tablas enlazadas con inner join o left join.....

Lo que quiero es dependiendo de si existe cierta linea en una tabla, muestre los campos de esa tabla, sino muestre los campos equivalentes de otra.
Mi consulta es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
DECLARE @FECHA DATETIME;
 
SET @FECHA = '04/06/2020';
 
select AlbVentaCab.NumSerie AS SERIE
      ,AlbVentaCab.NumAlbaran AS NUMERO
      ,AlbventaCab.CODCLIENTE
      ,Clientes.NombreCliente AS NOMBRE
      ,AlbVentaCab.NBULTOS
      ,albventacab.TRANSPORTE AS CODTRANSPORTE
      ,transportes.NOMBRE AS EMPRESAENVIO
      ,etiquetasenvio.IMPRESO
      ,etiquetasenvio.OBSERVACIONES
      ,etiquetasenvio.NUMPARTIDA
 
 
-------------------------------------------------------------------------------------------------------------------------
--      poner estos campos si existe una linea en la tabla etiquetasenvio, para los valores :
--                 Etiquetasenvio,serie  = AlbVentaCab.NumSerie y
--                 Etiquetaenvio.numero = AlbVentaCab.NumAlbaran
 
      ,etiquetaenvio.NOMBRECOMERCIAL
      ,etiquetaenvio.DIRECCION1 AS DIRECCION
      ,etiquetaenvio.CODPOSTAL
      ,etiquetaenvio.POBLACION
      ,......
 
--     En caso contrario, deberá poner los valores de los campos
 
      ,clientesenvio.NOMBRECOMERCIAL
      ,clientesenvio.DIRECCION1 AS DIRECCION
      ,clientesenvio.CODPOSTAL
      ,clientesenvio.POBLACION
      ,........
 
-----------------------------------------------------------------------------------------
 
 
from albventacab
 
inner join clientes on clientes.codcliente = albventacab.codcliente
inner join clientesenvio on ((albventacab.codcliente = clientesenvio.codcliente) AND (albventacab.codenvio = clientesenvio.codenvio))
left join transportes on albventacab.transporte = transportes.codigo
left join etiquetasenvio on (albventacab.numserie = etiquetasenvio.serie and albventacab.numalbaran = etiquetasenvio.numero and albventacab.n = etiquetasenvio.n)
 
where ((albventacab.fecha = @FECHA) or (etiquetaenvio.FechaEnvio= @Fecha))
order by NUMSERIE, NUMALBARAN

He probado distintas formas, pero no he consiguido hacerlo.
Además consultar no es fácil para este problema.
No es como consultar la sintaxis de una instrucción.

Saludos y muchas 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
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Campos de distintas tablas

Publicado por Isaias (4558 intervenciones) el 05/06/2020 16:29:45
¿Como sabes que NO existen?, ¿Estan en NULL?, De ser asi, utiliza CASE para mostrar unos u otros
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