Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/12/2008, 11:13
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años, 1 mes
Puntos: 38
Respuesta: Optimizar consulta SQL

Podrias postear la estructura de tus tablas, no me queda muy claro a quien pertenecen los campos que estas seleccionando.

trate de identar el query, podrias agregarle los alias correspondientes para que sea mas claro??

segun entendi, lo que necesitas es insertar en cuentaseco todas las combinaciones que resulten de cencostos y gl00100 que no hallan sido insertadas antes segun la concatenacion de strings... estoy en lo cierto?

Código:
if exists (select cod_centro from cencostos)
begin
INSERT CuentasCeco
SELECT DISTINCT 
 SUBSTRING(cod_centro,1,7) + 
 SUBSTRING(
         RTRIM(LTRIM(ISNULL(ACTNUMBR_1,''))) +
         RTRIM(LTRIM(ISNULL(ACTNUMBR_2,''))) +
         RTRIM(LTRIM(ISNULL(ACTNUMBR_3,''))) +
         RTRIM(LTRIM(ISNULL(ACTNUMBR_4,''))) +
         RTRIM(LTRIM(ISNULL(ACTNUMBR_5,''))) + 
         RTRIM(LTRIM(ISNULL(ACTNUMBR_6,''))) +
         RTRIM(LTRIM(ISNULL(ACTNUMBR_7,''))) +
         RTRIM(LTRIM(ISNULL(ACTNUMBR_8,''))),8, 17)
,SUBSTRING(ACTDESCR,1,51)
,SUBSTRING(RTRIM(LTRIM(ACCTTYPE)),1,3)
,SUBSTRING(cod_centro,43,4)
,SUBSTRING(cod_centro,1,7)
from cencostos 
FULL JOIN 
     gl00100 Cu ON 1=1 
WHERE NOT EXISTS(SELECT ACTINDX 
                 FROM   gl00100 
                 WHERE  RTRIM(LTRIM(ACTNUMBR_1)) +
                        RTRIM(LTRIM(ACTNUMBR_2)) + 
                        RTRIM(LTRIM(ACTNUMBR_3)) +
                        RTRIM(LTRIM(ACTNUMBR_4)) + 
                        RTRIM(LTRIM(ACTNUMBR_5)) +
                        RTRIM(LTRIM(ACTNUMBR_6)) + 
                        RTRIM(LTRIM(ACTNUMBR_7)) +
                        RTRIM(LTRIM(ACTNUMBR_8)) = 
                        SUBSTRING(cod_centro,1,7) + 
                        SUBSTRING(
                              RTRIM(LTRIM(cu.ACTNUMBR_1)) +
                              RTRIM(LTRIM(cu.ACTNUMBR_2)) +
                              RTRIM(LTRIM(cu.ACTNUMBR_3)) +
                              RTRIM(LTRIM(cu.ACTNUMBR_4)) +
                              RTRIM(LTRIM(cu.ACTNUMBR_5)) + 
                              RTRIM(LTRIM(cu.ACTNUMBR_6)) +
                              RTRIM(LTRIM(cu.ACTNUMBR_7)) +
                              RTRIM(LTRIM(cu.ACTNUMBR_8)), 8, 17))
                     and 
                        SUBSTRING(cod_centro,1,7) + 
                        SUBSTRING(
                              RTRIM(LTRIM(ISNULL(ACTNUMBR_1,''))) +
                              RTRIM(LTRIM(ISNULL(ACTNUMBR_2,''))) +
                              RTRIM(LTRIM(ISNULL(ACTNUMBR_3,''))) +
                              RTRIM(LTRIM(ISNULL(ACTNUMBR_4,''))) +
                              RTRIM(LTRIM(ISNULL(ACTNUMBR_5,''))) +
                              RTRIM(LTRIM(ISNULL(ACTNUMBR_6,''))) +
                              RTRIM(LTRIM(ISNULL(ACTNUMBR_7,''))) +
                              RTRIM(LTRIM(ISNULL(ACTNUMBR_8,''))), 8, 17) 
                        not in (select Expr1 from CuentasCeco)
end
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.