Tengo este Query y es el que necesito para la gerencia, pero me esta duplicando muchas líneas la misma actividad, sabrán porque será??
SELECT T1."DocNum" AS "Doc Preliminar", T1."ClgCode", T1."CntctSbjct", T4."Name", T1."BeginTime" AS "H.Inicio", T1."Recontact" AS "FInicio", T1."ENDTime" AS "H.Final", T1."endDate" AS "FFinal", T1."Duration" AS "Duracion", T1."AssignedBy"AS "Asignado", T2."U_NAME" AS "Usuario", T1."CntctType" AS "Clase", T0."Name", T1."Action", T1."CardCode", T3."CardName", T1."Notes", T6."U_NAME"
FROM OCLT T0
INNER JOIN OCLG T1 ON T0."Code" = T1."CntctType"
INNER JOIN OUSR T2 ON T1."AttendUser" = T2."USERID"
INNER JOIN OCRD T3 ON T1."CardCode" = T3."CardCode"
INNER JOIN OCLS T4 ON T1."CntctSbjct" = T4."Code"
INNER JOIN OINV T5 ON T3."CardCode" = T5."CardCode"
INNER JOIN OUSR T6 ON T5."UserSign" = T6."USERID"
WHERE T1."CntctType" in('14')
ORDER BY T1."CntctType"
El problema que veo es que tienes un INNER JOIN a la OINV, ligando solo el CardCode de la OCRD que a su vez se liga a la OCLG. Creo que si en la actividad se tiene referenciado el documento de la OINV, esa relación tiene que cambiar a como la tienes actualmente.
También veo que tienes la OUSR, asumo que para determinar el usuario que generó el documento.
Puedes hacer la prueba, agrega T5.DocNum te va a traer diferentes Números de Facturas, por lo que yo veo conveniente que cambies la relación a: INNER JOIN OINV T5 ON T1.DocEntry = T5.DocEntry
De esta manera al tener la factura enlazada en la actividad, solo revisará 1 registro y no todas las facturas en donde el cliente sea el mismo al de la actividad.
Puedes usar la instruccion DISTINCT y cambiar el desplegado del campo T1.NOTES para que no te mande error de tipo de dato en ese campo al usar DISTINCT.
SELECT DISTINCT T1."DocNum" AS "Doc Preliminar", T1."ClgCode", T1."CntctSbjct", T4."Name", T1."BeginTime" AS "H.Inicio", T1."Recontact" AS "FInicio", T1."ENDTime" AS "H.Final", T1."endDate" AS "FFinal", T1."Duration" AS "Duracion", T1."AssignedBy"AS "Asignado", T2."U_NAME" AS "Usuario", T1."CntctType" AS "Clase", T0."Name", T1."Action", T1."CardCode", T3."CardName",SUBSTRING(T1."Notes",1,100), T6."U_NAME"
te dejo la consulta corregida con las comillas correctas.
Saludos.
SELECT Distinct T1."DocNum" AS "Doc Preliminar", T1."ClgCode", T1."CntctSbjct", T4."Name", T1."BeginTime" AS "H.Inicio", T1."Recontact" AS "FInicio", T1."ENDTime" AS "H.Final", T1."endDate" AS "FFinal", T1."Duration" AS "Duracion", T1."AssignedBy"AS "Asignado", T2."U_NAME" AS "Usuario", T1."CntctType" AS "Clase", T0."Name", T1."Action", T1."CardCode", T3."CardName",SUBSTRING(T1."Notes",1,100), T6."U_NAME"
FROM "OCLT" T0
INNER JOIN OCLG T1 ON T0."Code" = T1."CntctType"
INNER JOIN OUSR T2 ON T1."AttendUser" = T2."USERID"
INNER JOIN OCRD T3 ON T1."CardCode" = T3."CardCode"
INNER JOIN OCLS T4 ON T1."CntctSbjct" = T4."Code"
INNER JOIN OINV T5 ON T3."CardCode" = T5."CardCode"
INNER JOIN OUSR T6 ON T5."UserSign" = T6."USERID"
WHERE T1."CntctType" in('14')
ORDER BY T1."CntctType"
Al igual que en otras consultas que has puesto en este foro, no debes estar relacionando bien las tablas.
Además tienes abiertos 2 temas con el mismo problema.
Unas recomendaciones:
1.- Debes empezar la consulta por la parte sencilla con 2 o 3 tablas y visualizando sus resultados, fijandote o anotando el número total de registros.
2.- Cuando añades una tabla nueva (primero estudia porque campos y de que forma tienes que hacer la JOIN), observa su comportamiento en el número total de registros.
3.- Estas haciendo JOIN a la tabla OUSR 2 veces.
4.- Para poder ayudarte de manera efectiva, en la consulta que nos compartas, elimina tus campos de usuario y algún where peculiar, para que quien pueda ayudarte le resulte sencillo poder ejecutarla y no resulte un trabajo tedioso y largo, porque nuestro juego de datos no tiene los tuyos para poder verificar correctamente la sql.