Saltar al contenido principal

 none
SQL CONSULTA RRS feed

  • Pregunta

  • Buen día, solicito una gran ayuda, cree dos consultas para mostrar una información requerida pero tengo un gran problema, para las dos consultas tengo varias tablas únicas como lo es la tabla RDV_Greta_Vendedores, pasa que cuando se consulta un asesor que se encuentre vinculado en las dos consultas (ASESORES INDIRECTOS - ASESORES DIRECTOS) me trae el mismo dato para las dos consultas, por ejemplo, el punto de venta se muestra el mismo para las dos consultas lo cual es errado, porque si tengo un asesor vigente ASESORES INDIRECTOS no debería mostrarme lo mismo para ASESORES DIRECTOS independientemente que se encuentre una sola vez en la tabla RDV_Greta_Vendedores, quisiera saber si hay alguna posibilidad de condicionar las consultas, por ejemplo si en la consulta ASESORES INDIRECTOS el asesor esta vigente que me muestre el punto de venta donde esta y que en la consulta ASESORES DIRECTOS el punto de venta me aparezca como no registra. Gracias.    
    --ASESOR INDIRECTO--
    SELECT ISNULL(A.NUM_IDENT,'NO REGISTRA') AS NUM_IDENT, ISNULL(A.COD_VENDEALER,'NO REGISTRA') AS COD_VENDEALER, 
    ISNULL(A.NOM_VENDEALER,'NO REGISTRA') AS NOM_VENDEALER, ISNULL(A.COD_VENDE_RAIZ,'NO REGISTRA') AS COD_VENDE_RAIZ,
    ISNULL(A.[NOMBRE VENDEDOR RAIZ],'NO REGISTRA') AS [NOMBRE VENDEDOR RAIZ], ISNULL(A.COD_VENDEDOR,'NO REGISTRA') AS COD_VENDEDOR,
    ISNULL(A.NOM_VENDEDOR,'NO REGISTRA') AS NOM_VENDEDOR, ISNULL(D.Seller_Code,'NO REGISTRA') AS MIG_FS,
    ISNULL(A.MOVIL_VENDEALER,'NO') AS MOVIL_VENDEALER, ISNULL(D.Org_Name,'NO REGISTRA') AS OU_NAME,
    ISNULL(A.DES_TIPCOMIS,'NO REGISTRA') AS DES_TIPCOMIS, ISNULL(A.DES_REGION,'NO REGISTRA') AS DES_REGION,
    ISNULL(A.DES_CIUDAD,'NO REGISTRA') AS DES_CIUDAD, ISNULL(B.Canal,'NO REGISTRA') AS Canal,
    ISNULL(A.ESTADO_ASESOR,'NO REGISTRA') AS ESTADO_ASESOR, ISNULL(B.Login_OIM,'NO REGISTRA') AS Login_OIM,
    ISNULL(B.Estado_OIM,'NO REGISTRA') AS Estado_OIM, ISNULL(C.USER_LOGIN,'NO REGISTRA') AS USER_LOGIN,
    ISNULL(C.ESTADO,'NO REGISTRA') AS ESTADO, ISNULL(E.[ALARMA FINAL COMPAÑÍA],'NO REGISTRA') AS INDICE_ASESOR_MOVIL,
    ISNULL(F.[Alarma Productos],'NO REGISTRA') AS INDICE_ASESOR_FIJA, ISNULL(G.[Alarma Productos],'NO REGISTRA') AS INDICE_TRAMITADOR_FIJA,
    CASE WHEN EXISTS (SELECT * FROM RDV_Vtas_Pend_legaliza as I 
    WHERE I.NumeroIdentificacionVendedor = A.NUM_IDENT) THEN 'SI' ELSE 'NO' END AS LINEA_PENDIENTE_POR_LEGALIZAR,
    ISNULL(D.Cod_punto,'NO REGISTRA') AS COD_PUNTO_GRETA, ISNULL(D.Estado_User,'NO REGISTRA') AS Estado_Asesor_Greta
    FROM PREP_ASES_DIRINT_ACTSUSP A 
    LEFT JOIN OIM11_ReporteUsuarioYAplicativos B ON B.Cedula=A.NUM_IDENT
    LEFT JOIN RDV_UsuariosNabis C ON B.Cedula=C.CC
    LEFT JOIN RDV_Greta_Vendedores D ON A.NUM_IDENT=D.Personal_ID
    LEFT JOIN RDV_Indice_Asesor_Movil E ON E.[NUM IDENT VENDEDOR]=A.NUM_IDENT 
    LEFT JOIN RDV_Indice_Asesores_Fija F ON F.[Documento Asesor]=A.NUM_IDENT
    LEFT JOIN RDV_Indice_Tramitador_Fija G ON G.[Documento Tramitador]=A.NUM_IDENT
    WHERE [ESTADO_ASESOR] <> 'CANCELADO POR DUPLICIDAD'
    
    --ASESOR DIRECTO--
    SELECT ISNULL(A.NUM_IDENT,'NO REGISTRA') AS NUM_IDENT, ISNULL(A.COD_VENDEDOR,'NO REGISTRA') AS COD_VENDEDOR, 
    ISNULL(A.[NOMBRE VENDEDOR],'NO REGISTRA') AS [NOMBRE VENDEDOR], ISNULL(A.DES_OFICINA,'NO REGISTRA') AS DES_OFICINA,
    ISNULL(D.Seller_Code,'NO REGISTRA') AS MIG_FS, ISNULL(D.Org_Name,'NO REGISTRA') AS OU_NAME, ISNULL(A.NUMERO_MOVIL,'NO') AS NUMERO_MOVIL,
    ISNULL(A.[NOMBRE DE LA REGION],'NO REGISTRA') AS [NOMBRE DE LA REGION], ISNULL(B.Canal,'NO REGISTRA') AS Canal,
    ISNULL(A.DES_ESTADO,'NO REGISTRA') AS DES_ESTADO, ISNULL(B.Login_OIM,'NO REGISTRA') AS Login_OIM,
    ISNULL(B.Estado_OIM,'NO REGISTRA') AS Estado_OIM, ISNULL(C.USER_LOGIN,'NO REGISTRA') AS USER_LOGIN, ISNULL(C.ESTADO,'NO REGISTRA') AS ESTADO,
    ISNULL(E.[ALARMA FINAL COMPAÑÍA],'NO REGISTRA') AS INDICE_ASESOR_MOVIL, ISNULL(F.[Alarma Productos],'NO REGISTRA') AS INDICE_ASESOR_FIJA,
    ISNULL(G.[Alarma Productos],'NO REGISTRA') AS INDICE_TRAMITADOR_FIJA,
    CASE WHEN EXISTS (SELECT * FROM RDV_Vtas_Pend_legaliza as I 
    WHERE I.NumeroIdentificacionVendedor = A.NUM_IDENT) THEN 'SI' ELSE 'NO' END AS LINEA_PENDIENTE_POR_LEGALIZAR,
    ISNULL(D.Cod_punto,'NO REGISTRA') AS COD_PUNTO_GRETA, ISNULL(D.Estado_User,'NO REGISTRA') AS Estado_Asesor_Greta
    FROM PREP_ASESORES_ACT_SUS_CAN A 
    LEFT JOIN OIM11_ReporteUsuarioYAplicativos B ON B.Cedula=A.NUM_IDENT
    LEFT JOIN RDV_UsuariosNabis C ON B.Cedula=C.CC
    LEFT JOIN RDV_Greta_Vendedores D ON A.NUM_IDENT=D.Personal_ID
    LEFT JOIN RDV_Indice_Asesor_Movil E ON E.[NUM IDENT VENDEDOR]=A.NUM_IDENT 
    LEFT JOIN RDV_Indice_Asesores_Fija F ON F.[Documento Asesor]=A.NUM_IDENT
    LEFT JOIN RDV_Indice_Tramitador_Fija G ON G.[Documento Tramitador]=A.NUM_IDENT
    WHERE DES_ESTADO <> 'CANCELACION POR DUPLICIDAD'
    ORDER BY A.DES_ESTADO

     
    martes, 19 de noviembre de 2019 22:49

Todas las respuestas

  • Hola Cristian8703:

    A priori por lo que cuentas y la información que muestras es un poco difícil darte ayuda.

    No das información de como se mezclan las dos consultas.

    Supongo que prep_asesores_act_sus_can.NUM_IDENT será el mismo id que PREP_ASES_DIRINT_ACTSUSP.Num_Ident

    Luego el punto de venta supongo que es la tabla RDV_Greta_Vendedores.CodPunto.

    En ese escenario:

    SELECT 
    ISNULL(A.NUM_IDENT,'NO REGISTRA') AS NUM_IDENT, 
    ISNULL(A.COD_VENDEDOR,'NO REGISTRA') AS COD_VENDEDOR, 
    ISNULL(A.[NOMBRE VENDEDOR],'NO REGISTRA') AS [NOMBRE VENDEDOR], 
    ISNULL(A.DES_OFICINA,'NO REGISTRA') AS DES_OFICINA,
    ISNULL(D.Seller_Code,'NO REGISTRA') AS MIG_FS, 
    ISNULL(D.Org_Name,'NO REGISTRA') AS OU_NAME, 
    ISNULL(A.NUMERO_MOVIL,'NO') AS NUMERO_MOVIL,
    ISNULL(A.[NOMBRE DE LA REGION],'NO REGISTRA') AS [NOMBRE DE LA REGION], 
    ISNULL(B.Canal,'NO REGISTRA') AS Canal,
    ISNULL(A.DES_ESTADO,'NO REGISTRA') AS DES_ESTADO, 
    ISNULL(B.Login_OIM,'NO REGISTRA') AS Login_OIM,
    ISNULL(B.Estado_OIM,'NO REGISTRA') AS Estado_OIM, 
    ISNULL(C.USER_LOGIN,'NO REGISTRA') AS USER_LOGIN, 
    ISNULL(C.ESTADO,'NO REGISTRA') AS ESTADO,
    ISNULL(E.[ALARMA FINAL COMPAÑÍA],'NO REGISTRA') AS INDICE_ASESOR_MOVIL, 
    ISNULL(F.[Alarma Productos],'NO REGISTRA') AS INDICE_ASESOR_FIJA,
    ISNULL(G.[Alarma Productos],'NO REGISTRA') AS INDICE_TRAMITADOR_FIJA,
    CASE WHEN EXISTS (SELECT * FROM RDV_Vtas_Pend_legaliza as I 
    WHERE I.NumeroIdentificacionVendedor = A.NUM_IDENT) THEN 'SI' ELSE 'NO' END AS LINEA_PENDIENTE_POR_LEGALIZAR,
    ISNULL(OA.Cod_punto,'NO REGISTRA') AS COD_PUNTO_GRETA, 
    ISNULL(D.Estado_User,'NO REGISTRA') AS Estado_Asesor_Greta
    FROM PREP_ASESORES_ACT_SUS_CAN A 
    LEFT JOIN OIM11_ReporteUsuarioYAplicativos B ON B.Cedula=A.NUM_IDENT
    LEFT JOIN RDV_UsuariosNabis C ON B.Cedula=C.CC
    LEFT JOIN RDV_Greta_Vendedores D ON A.NUM_IDENT=D.Personal_ID
    LEFT JOIN RDV_Indice_Asesor_Movil E ON E.[NUM IDENT VENDEDOR]=A.NUM_IDENT 
    LEFT JOIN RDV_Indice_Asesores_Fija F ON F.[Documento Asesor]=A.NUM_IDENT
    LEFT JOIN RDV_Indice_Tramitador_Fija G ON G.[Documento Tramitador]=A.NUM_IDENT
    OUTER APPLY (
    SELECT D.PUNTOVENTA
    	FROM PREP_ASES_DIRINT_ACTSUSP P
    	LEFT JOIN RDV_Greta_Vendedores D ON P.NUM_IDENT=D.Personal_ID
    WHERE 
    	P.NUM_IDENT = A.NUM_IDENT
    ) AS OA
    WHERE DES_ESTADO <> 'CANCELACION POR DUPLICIDAD'
    ORDER BY A.DES_ESTADO

    El juego esta en que outer apply, dentro de su conjunto hay un P.num_Ident = a.Num_ident, o lo que es lo mismo igualando las tablas de las dos consultas, la interior que se hace contra la de asesores indirectos y la externa contra asesores directos.

    miércoles, 20 de noviembre de 2019 5:01