Sub consulta dentro de caseºº
CASE WHEN GVA12.NRO_SUCURS <> 0 THEN GVA12.NRO_SUCURS ELSE (SELECT
SUC.NRO_SUCURSAL FROM EMPRESA JOIN SUCURSAL SUC ON (EMPRESA.ID_SUCURSAL =
SUC.ID_SUCURSAL)) END AS NRO_SUCURS
Inclusión de una tabla temporal llamada TMP relacionada con la tabla GVA14.COD_CLIENT =
TMP.COD_CLIENT – esto se usa para hacer sumas apuntadas a la tabla temporal
FROM
(SELECT T_COMP, N_COMP, FECHA_EMIS, COD_CLIENT, IMPORTE, ID_NEXO_COBRANZAS_PAGO
FROM GVA12) AS TMP LEFT JOIN GVA14 ON GVA14.COD_CLIENT = TMP.COD_CLIENT
Se usa para concatenar 2 columnas de texto
select CONCAT(razon_soci, ',' ,nom_com) as cliente from gva14
CASE CON VARIAS CONDICIONES DE DIFERENTES BASES
SELECT TOP 100 PERCENT
CASE WHEN (P.SALDO_CC <=0) AND (S.SALDO_CC <=0) AND (D.SALDO_CC <=0)
THEN "LAS 3"
WHEN (P.SALDO_CC <=0) AND (S.SALDO_CC <=0) AND (D.SALDO_CC >0) THEN
"PLAN Y SIME"
WHEN (P.SALDO_CC <=0) AND (S.SALDO_CC >0) AND (D.SALDO_CC <=0) THEN
"PLAN Y DSI"
WHEN (P.SALDO_CC >0) AND (S.SALDO_CC <=0) AND (D.SALDO_CC <=0) THEN
"SIME Y DSI"
WHEN (P.SALDO_CC >0) AND (S.SALDO_CC > 0) AND (D.SALDO_CC <=0) THEN "DSI"
WHEN (P.SALDO_CC >0) AND (S.SALDO_CC <=0) AND (D.SALDO_CC >0) THEN "SIME"
WHEN (P.SALDO_CC <=0) AND (S.SALDO_CC >0) AND (D.SALDO_CC >0) THEN
"PLAN" ELSE "" END AS [SALDO<=0],
FROM GVA14 AS P LEFT JOIN [2018_SIME].DBO.GVA14 AS S ON P.COD_CLIENT=
S.COD_CLIENT
LEFT JOIN [2018_DSI].DBO.GVA14 AS D ON P.COD_CLIENT= D.COD_CLIENT
"// recibos cobrados //"
SELECT
a.cod_client, a.t_comp,a.n_comp, (importe -cobrado) as [a cuenta]
FROM GVA12 AS A
JOIN (SELECT t_comp_can, n_comp_can, sum(imp_can_un) as [cobrado] FROM GVA07 where
t_comp_can ="REC" group by t_comp_can, n_comp_can) AS TMP ON TMP.T_COMP_can =
a.T_COMP AND TMP.N_COMP_can = a.N_COMP
LEFT JOIN GVA07 as B ON TMP.T_COMP_can = B.T_COMP AND TMP.N_COMP_can =
B.N_COMP
where (A.estado_UNI = "CTA") and a.cod_client = "2232"
"// recibos cobrados //"
Agregar sub rutinas
SELECT
GVA21.COD_CLIENT AS [Cód. cliente] ,
GVA03.COD_ARTICU AS [Cód. Artículo] ,
ISNULL(GVA45.[DESC], [Link]) AS [Descripción] ,
SUM(CASE WHEN [Link] IN (3,4,5) THEN 0 ELSE GVA03.CANT_PEN_D
END) AS [Cantidad Pendiente de Descargar]
FROM
GVA03 (NOLOCK) JOIN GVA21 ON GVA03.NRO_PEDIDO =GVA21.NRO_PEDIDO and
GVA03.TALON_PED=GVA21.TALON_PED
LEFT JOIN GVA16 ON 1=1
LEFT JOIN GVA10 ON GVA10.NRO_DE_LIS = GVA21.N_Lista
LEFT JOIN (SELECT TALON_PED, NRO_PEDIDO, MIN(FEC_ENTREG) AS FECHA_MINIMA
FROM GVA126 GROUP BY TALON_PED, NRO_PEDIDO ) AS TEMP ON
GVA21.TALON_PED = TEMP.TALON_PED AND GVA21.NRO_PEDIDO =
TEMP.NRO_PEDIDO
LEFT JOIN (SELECT GVA21.TALON_PED, GVA21.NRO_PEDIDO, SUM (((CASE
GVA10.MON_CTE WHEN 1 THEN [Link] ELSE ([Link] * [Link])
END ) * (1 - ([Link]) / 100)) * (GVA03.Cant_Pen_F))
TOTAL_SIN_DESCUENTO FROM GVA21 INNER JOIN GVA10 ON
GVA21.N_Lista = GVA10.Nro_de_Lis INNER JOIN GVA03 ON (GVA21.TALON_PED
= GVA03.TALON_PED AND GVA21.NRO_PEDIDO = GVA03.NRO_PEDIDO) WHERE
(GVA03.RENGL_PADR = 0) GROUP BY GVA21.TALON_PED, GVA21.NRO_PEDIDO)
AS TEMP2 ON GVA21.TALON_PED = TEMP2.TALON_PED AND
GVA21.NRO_PEDIDO = TEMP2.NRO_PEDIDO
LEFT JOIN GVA43 (NOLOCK) ON GVA21.TALON_PED = [Link]
LEFT JOIN STA16 ON 1=1
FULL OUTER JOIN STA11 (NOLOCK) ON
GVA03.COD_ARTICU = STA11.COD_ARTICU
LEFT JOIN GVA45 (NOLOCK) ON
[Link] = GVA03.TALON_PED AND GVA45.N_COMP = GVA03.NRO_PEDIDO
AND GVA45.N_RENGLON = GVA03.N_RENGLON
LEFT JOIN DIRECCION_ENTREGA ON DIRECCION_ENTREGA.ID_DIRECCION_ENTREGA =
GVA21.ID_DIRECCION_ENTREGA
Unión de tablas
FULL OUTER JOIN STA11 (NOLOCK) ON GVA03.COD_ARTICU = STA11.COD_ARTICU
La sugerencia de tabla NOLOCK (o su equivalente READUNCOMMITTED) te permite
realizar lecturas de datos aunque éstos estén bloqueados por instrucciones de
actualización de datos
l FULL OUTER JOIN palabra clave todos los registros de retorno cuando hay
un partido en cualquiera izquierdo (tabla 1) o registros (Tabla 2) tabla de la
derecha.
Nota: combinación externa completa pueden devolver potencialmente muy
grandes conjuntos de resultados!
Combinación externa completa Sintaxis
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = [Link]
_name;