none
Obtencion numero ID posteriores a un ID concreto RRS feed

  • Pregunta

  • Buenas tardes;

    No se muy bien como obtener el numero de los ID que son posteriores a un ID concreto que tiene unas caracteristicas concretas.

    Tengo esta query que me dice en que momentos del dia se han producido esos ID con unas caracteristicas concretas pero luego no soy capaz de realizar una query que me cuente cuales son los posteriores que se han producido dentro de una fecha de tiempo concreta.....

    El campo ID es correlativo es decir, a mayor ID, es que se ha producido posterior a un ID mas pequeño.

    Esta es la query

    SELECT COUNT (ID) AS 'NUMERO 1 CONTACTO', DATEPART (HH,HORA_CONTACTO) AS 'HORA'
      FROM [ICCS].[dbo].[DATOS_BLOQUE_II_NEW]
      WHERE ID IN
      (SELECT MIN (ID)  
      FROM [ICCS].[dbo].[DATOS_BLOQUE_II_NEW]
      where ID_CAMPANIA = 'COLD CALLING PL7' --LA CAMPAÑA A ANALIZAR--
    AND [FECHA_CONTACTO] > '01-11-2017' AND [FECHA_CONTACTO] < '01-12-2017' --EL PERIODO A ANALIZAR--
    AND ID_AGENTE <> 'AUTOMARCADOR' --and DURACION_LLAMADA > '00:00:12.0000000' --ESTA LINEA ES EL CRITERIO DE CONTACTO EN BLOQUE2NEW--
    AND ID_BASE_DATOS <> 'ENTRANTE' --OUTBOUND—
    AND TIPIFICACION_LLAMADA NOT IN ('ILOCALIZABLE NO ARGUMENTADO', 'ILOCALIZABLE FINALIZADO','ILOCALIZABLE ARGUMENTADO', 'DESCARTADO NO TOCADO')--tenemos que quitar esto si o si, para que no aparezcan los datos de la devolucion del mes pasado.....--
    GROUP BY TELEFONO_CONTACTO_BBDD)
    group by DATEPART (HH,HORA_CONTACTO)

    SI EN LA SUBQUERY PUDIERA PONER >, TENDRIA LA PAPELETA HECHA, PERO SE QUE CON SUBQUERYS DE VALORES MULTIPLES NO PUEDO REALIZAR ESAS COMPARACIONES, ALGUNA FORMA ACCESORIA PARA SACAR ESA INFORMACION DE LOS ID´s POSTERIORES A ESOS ID concretos

    lunes, 11 de diciembre de 2017 17:14

Respuestas

  • Lo siento, tienes razón, confundí el GROUP BY de la subconsulta pensando que se trataba de la agrupación de la consulta externa, al obviar la agrupación interna fue claro para mi que la sumarización sólo retornaría un valor.

    Bien, puedes intentar combinar ambos conjuntos donde la expresión de unión sería comparada por el operador '>', por ejemplo:

    SELECT 
        COUNT(t1.ID) AS 'NUMERO 1 CONTACTO', DATEPART(HH, t1.HORA_CONTACTO) AS 'HORA'
    FROM 
        [ICCS].[dbo].[DATOS_BLOQUE_II_NEW] t1
        INNER JOIN 
        (
    	   SELECT MIN(ID) AS ID FROM ...
        ) t2 ON t1.ID > t2.ID

    Sin embargo, la forma como planteas la consulta dudo que retorne los resultados que esperas, es decir, si la subconsulta retorna la serie: 5, 10, 15, 20; la expresión de unión resultará verdadera para los ID: 6, 8, 12 de la consulta externa, siendo que son menores a otros elementos de la serie -por ejemplo a 15 y 20-, debes reforzar la expresión de unión con la comparación de otro valor de columna que obligue a enmarcar grupos.

    jueves, 14 de diciembre de 2017 15:59
  • No entiendo esta respuesta.

    Esta query si que arroja mas de un resultado, y por ello cuando le pongo un > o un < me manda a paseo.

    (SELECT MIN (ID)  
      FROM [ICCS].[dbo].[DATOS_BLOQUE_II_NEW]
      where ID_CAMPANIA = 'COLD CALLING PL7' --LA CAMPAÑA A ANALIZAR--
    AND [FECHA_CONTACTO] > '01-11-2017' AND [FECHA_CONTACTO] < '01-12-2017' --EL PERIODO A ANALIZAR--
    AND ID_AGENTE <> 'AUTOMARCADOR' --and DURACION_LLAMADA > '00:00:12.0000000' --ESTA LINEA ES EL CRITERIO DE CONTACTO EN BLOQUE2NEW--
    AND ID_BASE_DATOS <> 'ENTRANTE' --OUTBOUND—
    AND TIPIFICACION_LLAMADA NOT IN ('ILOCALIZABLE NO ARGUMENTADO', 'ILOCALIZABLE FINALIZADO','ILOCALIZABLE ARGUMENTADO', 'DESCARTADO NO TOCADO')--tenemos que quitar esto si o si, para que no aparezcan los datos de la devolucion del mes pasado.....--
    GROUP BY TELEFONO_CONTACTO_BBDD)

    Alguien me sabe proponer una alternativa para realizarlo.

    Muchas gracias

    jueves, 14 de diciembre de 2017 11:38

Todas las respuestas

  • Por lo que veo, la subconsulta no retorna una lista de valores, retorna un valor escalar porque sumarizas los resultados mediante la función MIN(), en consecuencia si podrías utilizar el operador de comparación 'mayor que'.

    WHERE ID > (SELECT MIN(ID) ...)

    lunes, 11 de diciembre de 2017 17:36
  • No entiendo esta respuesta.

    Esta query si que arroja mas de un resultado, y por ello cuando le pongo un > o un < me manda a paseo.

    (SELECT MIN (ID)  
      FROM [ICCS].[dbo].[DATOS_BLOQUE_II_NEW]
      where ID_CAMPANIA = 'COLD CALLING PL7' --LA CAMPAÑA A ANALIZAR--
    AND [FECHA_CONTACTO] > '01-11-2017' AND [FECHA_CONTACTO] < '01-12-2017' --EL PERIODO A ANALIZAR--
    AND ID_AGENTE <> 'AUTOMARCADOR' --and DURACION_LLAMADA > '00:00:12.0000000' --ESTA LINEA ES EL CRITERIO DE CONTACTO EN BLOQUE2NEW--
    AND ID_BASE_DATOS <> 'ENTRANTE' --OUTBOUND—
    AND TIPIFICACION_LLAMADA NOT IN ('ILOCALIZABLE NO ARGUMENTADO', 'ILOCALIZABLE FINALIZADO','ILOCALIZABLE ARGUMENTADO', 'DESCARTADO NO TOCADO')--tenemos que quitar esto si o si, para que no aparezcan los datos de la devolucion del mes pasado.....--
    GROUP BY TELEFONO_CONTACTO_BBDD)

    Alguien me sabe proponer una alternativa para realizarlo.

    Muchas gracias

    jueves, 14 de diciembre de 2017 11:38
  • Lo siento, tienes razón, confundí el GROUP BY de la subconsulta pensando que se trataba de la agrupación de la consulta externa, al obviar la agrupación interna fue claro para mi que la sumarización sólo retornaría un valor.

    Bien, puedes intentar combinar ambos conjuntos donde la expresión de unión sería comparada por el operador '>', por ejemplo:

    SELECT 
        COUNT(t1.ID) AS 'NUMERO 1 CONTACTO', DATEPART(HH, t1.HORA_CONTACTO) AS 'HORA'
    FROM 
        [ICCS].[dbo].[DATOS_BLOQUE_II_NEW] t1
        INNER JOIN 
        (
    	   SELECT MIN(ID) AS ID FROM ...
        ) t2 ON t1.ID > t2.ID

    Sin embargo, la forma como planteas la consulta dudo que retorne los resultados que esperas, es decir, si la subconsulta retorna la serie: 5, 10, 15, 20; la expresión de unión resultará verdadera para los ID: 6, 8, 12 de la consulta externa, siendo que son menores a otros elementos de la serie -por ejemplo a 15 y 20-, debes reforzar la expresión de unión con la comparación de otro valor de columna que obligue a enmarcar grupos.

    jueves, 14 de diciembre de 2017 15:59