none
Valor más alto en un campo para cada valor en otro campo RRS feed

  • Pregunta

  • Hola,

    Tengo una tabla con varios campos, entre ellos ID_PERSONA y ID_RESPUESTA. Para cada ID_PERSONA puede haber varios ID_RESPUESTA. Necesito un query que me devuelva todos los ID_PERSONA y los valores ID_RESPUESTA más altos para cada uno de ellos.

    Gracias anticipadas.

    viernes, 4 de diciembre de 2015 11:57

Respuestas

  • No tienes más que hacer un GROUP BY por ID_PERSONA:

    SELECT ID_PERSONA, MAX(ID_RESPUESTA) FROM TABLA GROUP BY ID_PERSONA



    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    viernes, 4 de diciembre de 2015 12:20
  • Hola Plácidus,

    Si buscas el ID_RESPUESTA mas alto por cada ID_PERSONA entonces lo que te propone Asier vale, pero noto que en tu redacción mencionas "los valores más altos", a mi entender no basta con un valor máximo sino un TOP de valores máximos por cada ID_PERSONA, si es lo que supongo entonces puede servir:

    /*Buscar TOP 5 de las respuestas más alta a razón de un ID_PERSONA*/
    DECLARE @TOP int = 5;
    WITH DataSource (ID_PERSONA, ID_RESPUESTA, ORDEN)
    (
    SELECT
            ID_PERSONA,
            ID_RESPUESTA,
            ROW_NUMBER() OVER(PARTITION BY ID_PERSONA ORDER BY ID_RESPUESTA ASC)
    )
    SELECT ID_PERSONA, ID_RESPUESTA FROM DataSource WHERE (ORDEN < @TOP)

    viernes, 4 de diciembre de 2015 14:50

Todas las respuestas

  • utiliza la funcion Max de sql server 

    aqui te dejo un tutorial.

    http://www.w3schools.com/sql/sql_func_max.asp


    YhorbyMatias

    • Propuesto como respuesta HunchbackMVP viernes, 4 de diciembre de 2015 15:04
    viernes, 4 de diciembre de 2015 12:19
  • No tienes más que hacer un GROUP BY por ID_PERSONA:

    SELECT ID_PERSONA, MAX(ID_RESPUESTA) FROM TABLA GROUP BY ID_PERSONA



    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    viernes, 4 de diciembre de 2015 12:20
  • Hola Plácidus,

    Si buscas el ID_RESPUESTA mas alto por cada ID_PERSONA entonces lo que te propone Asier vale, pero noto que en tu redacción mencionas "los valores más altos", a mi entender no basta con un valor máximo sino un TOP de valores máximos por cada ID_PERSONA, si es lo que supongo entonces puede servir:

    /*Buscar TOP 5 de las respuestas más alta a razón de un ID_PERSONA*/
    DECLARE @TOP int = 5;
    WITH DataSource (ID_PERSONA, ID_RESPUESTA, ORDEN)
    (
    SELECT
            ID_PERSONA,
            ID_RESPUESTA,
            ROW_NUMBER() OVER(PARTITION BY ID_PERSONA ORDER BY ID_RESPUESTA ASC)
    )
    SELECT ID_PERSONA, ID_RESPUESTA FROM DataSource WHERE (ORDEN < @TOP)

    viernes, 4 de diciembre de 2015 14:50