SQL - Consulta de Repetidos con Coincidencia en tres Columnas

 
Vista:
sin imagen de perfil

Consulta de Repetidos con Coincidencia en tres Columnas

Publicado por Esteban (1 intervención) el 26/08/2022 01:41:25
Buenas tardes, soy nuevo en el foro, por lo que solicito la siguiente colaboracion

Soy Contador y sin mayor conocimiento en Programacion, sin embargo en la empresa el sistema ERP (Admon, Contable y de Nomina) permite realizar consultas a la base de Datos y teniendo en cuenta que estoy presentando algunas inconsistencia en la informacion, me gustaria su colaboracion con la siguiente situacion.

Contexto: en la Empresa realizamos el proceso de Causacion (Registro de la Factura) y Pago, para lo cual manejamos entre otros los campos de: Tercero (Nit del Proveedor), Referencia (Numero de la Factura o Cuenta de Cobro del Proveedor) y el Centro de Costo (Unidad de Negocio de nuestra empresa), con esta informacion particularmente se Causa la factura... Pero en el Proceso de Pago el personal al momento de realizar el pago, llama la factura (Carga del Listado de Facturas Pendientes de Pagar) y trae toda la info de la facturas a Excepcion del Centro de Costo (es decir, al cargar la factura, trae entre otros datos, el tercero, la referencia, pero no el centro de costos) y el Personal que realiza el pago debe digitar manualmente el Centro de Costos, lo que me ha traido algunos problemas, ya que en ocasiones digita Centros de Costos diferentes al asignado a la factura y no me cruza la cartera en Contabilidad.

Teniendo en cuenta lo anterior estoy tratando de realizar una consulta en SQL donde me pueda mostrar los dos momentos (Causacion/Pago) donde Tercero y Referencia son iguales pero CCostos es diferente.

Tablas de Consulta: 1. TblConDetalleDocumentos (Transacciones Contables, aqui esta todo el Movimiento de la Empresa) 2. TblPlanContableNIIF (Hago un JOIN a esta tabla para saber cuales de las cuentas en las transacciones contables tienen Saldo de Cartera - JOIN donde TblConDetalleDocumentos.StrCuentaNIIF = TblPlanContableNIIF.StrIdCuenta)

Tener en cuenta que cada factura tiene dos momentos (que corresponde a dos registros en la base de datos) y ambos deberian tener los mismos datos en Tercero, Referencia y CCosto, sin embargo la consulta para que me arroje los que presentana inconsistenciaas es los que cumplan la condicion de Tercero y Referencia Iguales y CCostos diferente.

1
2
3
4
5
6
7
8
9
SELECT * FROM TblConDetalleDocumentos
INNER JOIN TblPlanContableNIIF ON TblPlanContableNIIF.StrIdCuenta = TblConDetalleDocumentos.StrCuentaNIIF    WHERE TblPlanContableNIIF.IntSaldoRef = 1
  AND TblConDetalleDocumentos.StrComprobante <> 0
  AND StrTercero + StrReferencia + StrCCosto IN (
    SELECT StrTercero + StrReferencia +StrCCosto from TblConDetalleDocumentos
    WHERE StrComprobante <> 0
    GROUP BY StrTercero, StrReferencia, StrCCosto
    HAVING COUNT(*) > 1)
  ORDER BY StrTercero, StrReferencia

La Consulta Anterior me trae todas las transacciones repetidas en los tres campos (Tercero, Referenciaa y CCosto) pero cuando cambio el Parametro IN por NOT IN (para hacer lo contrario) me trae valores que no corresponden

he tratado de realizar la consulta de esta otra manera

1
2
3
4
5
6
SELECT StrTercero, StrReferencia, StrCCosto, COUNT(*) AS StrConteo FROM TblConDetalleDocumentos
INNER JOIN TblPlanContableNIIF ON TblPlanContableNIIF.StrIdCuenta = TblConDetalleDocumentos.StrCuentaNIIF    WHERE TblPlanContableNIIF.IntSaldoRef = 1
  AND TblConDetalleDocumentos.StrComprobante <> 0
    GROUP BY StrTercero, StrReferencia, StrCCosto
    HAVING COUNT(*) = 1
  ORDER BY StrTercero, StrReferencia

esta consulta es mas directa y es mas precisa, sin embargo esta filtrando datos que no corresponde, porque en ocasiones con el solo hecho de repetir solo un dato ya me lo muestra y debe mostrar solo si cumple las tres condiciones. sin embargo esta consulta solo me trae tres campos de consulta y yo necesito mas datos, ya que como quiero corregir el movimiento debo ir al comprobante y el documento y no me lo muestra

Les agradezco si mi puede colaborar con este tema, ya que como explique mis conocimientos son muy basico y no se que mas hacer para poder tratar de mejorar el codigo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder