traer suprimir reports repetidos registros mostrar eliminar duplicados duplica crystal agrupar sql reporting-services crystal-reports report

sql - repetidos - suprimir si se duplica crystal reports



¿Cómo puedo ocultar registros duplicados(dentro de un informe de Crystal) que ya se han revertido? (2)

Esta pregunta es una continuación de una pregunta que hice el otro día ("Necesito encontrar registros duplicados pero excluyo transacciones revertidas") .

Tengo un Crystal Report que muestra las transacciones de combustible de los clientes. Hay ocasiones en que una transacción duplicada se importará erróneamente. Si / cuando se descubre este error, el administrador revertirá la transacción, dejando los dos duplicados originales y una transacción "negativa" para la reversión. Ejemplo:

Date; Qty; Value; Reversal 1/14/08 5 20 N 1/14/08 5 20 N 1/14/08 -5 -20 Y 1/20/08 8 56 N 1/22/08 9 62 N 1/22/08 9 62 N

Idealmente, el cliente solo verá transacciones INDIVIDUALES (o una transacción duplicada que aún no se haya revertido). Si la transacción se ha invertido, solo queremos que vean el registro único original. Ejemplo (basado en los datos anteriores):

Date; Qty; Value; 1/14/08 5 20 1/20/08 8 56 1/22/08 9 62 1/22/08 9 62

Ya tengo una consulta que devolverá los datos de la manera que acabo de describir, pero necesito integrarlo con un informe de Crystal que requiera uniones a otras tablas. El rendimiento es TERRIBLE si utilizo el sql que ya tengo, así que estoy tratando de ver si sería posible ocultar las transacciones duplicadas (invertidas) dentro de las fórmulas de Crystal en lugar de usar un comando SQL como una tabla unida a otras tablas.

Por favor, avíseme si no estoy seguro. ¡Aprecio tu sabiduría de antemano!


¿Los reveses siempre se ordenan hacia abajo? De ser así, puede usar una fórmula para verificar el siguiente registro y ocultar condicionalmente la sección de detalles.

Por lo tanto, en la sección de detalles, agregue una fórmula para suprimir condicionalmente la sección si se trata de un registro de reversión o si el registro actual coincide con un registro de reversión posterior:

( {Reversal} = "Y" ) OR ( {Date} = Next({Date}) AND {QTY} = Next({QTY}}) * -1 AND {Value} = Next({Value}) * -1 AND Next({Reversal}) = "Y" )

Si las reversiones siempre coinciden, puedes simplificarlo para:

( {Reversal} = "Y" ) OR ( Next({Reversal}) = "Y" )


¿Es demasiado tarde para cambiar el modelo de datos ligeramente, de modo que invertir e invertir registros y marcar de alguna manera? Una vez trabajé en un sistema de este tipo donde los registros se insertaban con una bandera de ''C'' (actual) y si se invertía se actualizaban a ''O'' (original), y el registro de reversión se marcaba como ''R''. Todas las consultas que solo querían ver datos actuales solo podrían agregarse a la cláusula WHERE:

AND rec_type = ''C''