TRUNCATE TABLE CN_SALDO
GO

INSERT INTO CN_SALDO
SELECT *
FROM
(
SELECT *
FROM
(
SELECT 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO||
 gru.DIGITO||
 cue.DIGITOS||
 cat.DIGITOS
 AS SUBCUENTA,
 0 AS SALDO_ANTERIOR,
 SUM(mov.DEBITO) AS DEBITO,
 SUM(mov.CREDITO) AS CREDITO,
 SUM(mov.DEBITO) - SUM(mov.CREDITO)
 AS SALDO_ACTUAL

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 and mov.ID_CIA = doc.ID_CIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_VIGENCIA vig ON
 mov.ID_VIGENCIA = vig.ID_VIGENCIA

JOIN CN_PERIODO_CONTABLE per ON
 cad.ID_PERIODO_CONTABLE = per.ID_PERIODO_CONTABLE

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

WHERE vig.ID_VIGENCIA = 2010 AND per.ID_PERIODO_CONTABLE = 13 AND cue.NATURALEZA = 'D'

GROUP BY 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO,
 gru.DIGITO,
 cue.DIGITOS,
 cat.DIGITOS

ORDER BY
 SUBCUENTA
)

UNION

SELECT *
FROM
(
SELECT 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO||
 gru.DIGITO||
 cue.DIGITOS||
 cat.DIGITOS
 AS SUBCUENTA,
 0 AS SALDO_ANTERIOR,
 SUM(mov.DEBITO) AS DEBITO,
 SUM(mov.CREDITO) AS CREDITO,
 SUM(mov.CREDITO) - SUM(mov.DEBITO)
 AS SALDO_ACTUAL

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 and mov.ID_CIA = doc.ID_CIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_VIGENCIA vig ON
 mov.ID_VIGENCIA = vig.ID_VIGENCIA

JOIN CN_PERIODO_CONTABLE per ON
 cad.ID_PERIODO_CONTABLE = per.ID_PERIODO_CONTABLE

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

WHERE vig.ID_VIGENCIA = 2010 AND per.ID_PERIODO_CONTABLE = 13 AND cue.NATURALEZA = 'C'

GROUP BY 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO,
 gru.DIGITO,
 cue.DIGITOS,
 cat.DIGITOS

ORDER BY
 SUBCUENTA
)
)
ORDER BY
 SUBCUENTA
GO