Hola, estoy haciendo una conciliación bancaria entre un archivo plano
que me envia el banco subido a SQL y una tabla de transacciones
bancarias que tengo en SQL, el objetivo es comparar las dos tablas y
marcar con una bandera las transacciones que no coincidan para generar
un informe de no coincidentes.
La estructura es más o menos así:
Banco Plano
Cheque Valor Cheque Valor
1 $10 1 $10
2 $20 3 $20
3 $15 4 $12
4 $12 5 $24
5 $24 7 $30
en este caso se marcaría el cheque 2 en la tabla del banco y el 7 en
la tabla del archivo plano, eso no tiene mucho problema en hacerse,
simplemente se comparan y con un update se marcan los que coincidan y
el resto son los que no coinciden.
La instrucción para la tabla del banco sería algo así:
update banco set banco.conciliado = 'Y'
from banco inner join plano on
banco.cheque = plano.cheque and banco.valor = plano.valor
esto lo puedo hacer tambien para la otra tabla pero no se como hacerlo
para las dos en la misma instrucción, pero este no es el problema.
El problema se da en el siguiente caso:
Banco Plano
Cheque Valor Cheque Valor
1 $10 1 $10
2 $20 3 $20
2 $20 4 $12
3 $15 5 $24
4 $12 7 $30
5 $24
Puede darse el caso de que existan dos documentos con el mismo número
y el mismo valor en la tabla del banco (supuestamente es una anulación
del cheque), y cuando corro el update se comparan los dos registros de
la tabla de bancos con el registro de la tabla del archivo plano, y
necesito que se compare uno solo, para saber que sobra uno en la tabla
del banco.
Si sólo se tratara de seleccionar pues lo haria con un dinstinct pero
en un update no puedo utilizarlo.
Alguna idea? Gracias.
Leer las respuestas