02/12/2008, 11:13
|
| 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. |