none
GROUP BY en ACCESS RRS feed

  • Pregunta

  • Hola, tengo este query:
    select codigo, precio from Tabla group by codigo,precio order by codigo,precio

    Este query funciona correctamente, pero el problema es que solo necesito agrupar por codigo, y si saco el campo descripcion me da error.
    hay alguna forma de agrupar solamente por codigo.

    ahora obtengo esto:

    codigo                  Precio

    21                         10,50
    21                         12,50
    21                         15,50

     

    y yo quiero solo esto:

    codigo                  Precio

    21                         10,50

     

    martes, 10 de mayo de 2011 17:47

Respuestas

  • "Tomy El grande" escribió:
     
    > Hola, tengo este query:
    > select codigo, precio from Tabla group by codigo,precio order by codigo,precio
    >
    > Este query funciona correctamente, pero el problema es que solo necesito agrupar
    > por codigo, y si saco el campo descripcion me da error.
    > hay alguna forma de agrupar solamente por codigo.
    > y yo quiero solo esto:
    >
    > codigo                  Precio
    >
    > 21                         10,50
     
    Me imagino que te referirás al campo Precio en lugar del campo Descripcion, porque éste último no aparece en la consulta de selección que has indicado.
     
    Para obtener el resultado que deseas, el campo Precio lo tienes que incluir en una función de agregado que te devuelva un resúmen del mismo. Por ejemplo, si tu intención es obtener el MENOR IMPORTE existente agrupados por los valores del campo Codigo, tienes que ejecutar la siguiente consulta de selección:
     
    SELECT codigo, MIN(precio) AS [Menor importe]
    FROM Tabla
    GROUP BY codigo
    ORDER BY codigo
     
    Un saludo
     
     
     
     

    Enrique Martínez
      [MS MVP - VB]


    martes, 10 de mayo de 2011 18:11
  • hola

    porque no le agregas a la tabla un campo adicional de nombre "id" y quee ste sea autonumerico

    de esta forma tendras un numero que indique cual es el ultimo registro y podrias hacer

     

    SELECT TOP 1 codigo, precion FROM Tabla ORDER BY Id DESC

     

    o sea ordenas de forma descendente por el id y recuperas solo un registro

    ese id es justamente el ques e define como numerico y autonumerico (identity)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 10 de mayo de 2011 19:08

Todas las respuestas

  • "Tomy El grande" escribió:
     
    > Hola, tengo este query:
    > select codigo, precio from Tabla group by codigo,precio order by codigo,precio
    >
    > Este query funciona correctamente, pero el problema es que solo necesito agrupar
    > por codigo, y si saco el campo descripcion me da error.
    > hay alguna forma de agrupar solamente por codigo.
    > y yo quiero solo esto:
    >
    > codigo                  Precio
    >
    > 21                         10,50
     
    Me imagino que te referirás al campo Precio en lugar del campo Descripcion, porque éste último no aparece en la consulta de selección que has indicado.
     
    Para obtener el resultado que deseas, el campo Precio lo tienes que incluir en una función de agregado que te devuelva un resúmen del mismo. Por ejemplo, si tu intención es obtener el MENOR IMPORTE existente agrupados por los valores del campo Codigo, tienes que ejecutar la siguiente consulta de selección:
     
    SELECT codigo, MIN(precio) AS [Menor importe]
    FROM Tabla
    GROUP BY codigo
    ORDER BY codigo
     
    Un saludo
     
     
     
     

    Enrique Martínez
      [MS MVP - VB]


    martes, 10 de mayo de 2011 18:11
  • no, pero en realidad mi intencion no es obtener el primer importe, si no el ultimo que se agrego...que puede ser mayor o menor....nunca se sabe...
    martes, 10 de mayo de 2011 18:16
  • "Tomy El grande" escribió:
     
    > no, pero en realidad mi intencion no es obtener el primer importe,
    > si no el ultimo que se agrego...que puede ser mayor o menor....nunca se sabe...
     
    ¡Bueno! Esto es otra pregunta MUY DISTINTA a la que has efectuado anteriormente. ;-)
     
    Si tu intención es obtener el valor del campo Precio DEL ÚLTIMO REGISTRO AÑADIDO A LA TABLA, no tengo ni la menor idea de cómo lo puedes obtener ejecutando una simple consulta SQL de selección en una base de Access, porque EL CONCEPTO DE ÚLTIMO REGISTRO ES RELATIVO.
     
    ¿Cuál es el último registro? Tu sabes que has añadido un último registro, pero para que Access te lo devuelva, tú tendrás que pasarle ciertos parámetros a la consulta. Y la pregunta es ¿qué parámetros le pasas a Access para que te devuelva el último registro añadido?
    Aparte, también influirá los índices y clave principal que tengas establecidos en la tabla, por lo que el último registro puede convertirse en el primero, dependiendo del valor que tenga el campo del índice o de la clve principal. :-)
     
     
     
     

    Enrique Martínez
      [MS MVP - VB]




    martes, 10 de mayo de 2011 18:31
  • hola

    porque no le agregas a la tabla un campo adicional de nombre "id" y quee ste sea autonumerico

    de esta forma tendras un numero que indique cual es el ultimo registro y podrias hacer

     

    SELECT TOP 1 codigo, precion FROM Tabla ORDER BY Id DESC

     

    o sea ordenas de forma descendente por el id y recuperas solo un registro

    ese id es justamente el ques e define como numerico y autonumerico (identity)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 10 de mayo de 2011 19:08
  • "Leandro Tuttini" preguntó:
     
    > porque no le agregas a la tabla un campo adicional de nombre "id" y quee ste sea autonumerico
    > de esta forma tendras un numero que indique cual es el ultimo registro y podrias hacer
    >
    > SELECT TOP 1 codigo, precion FROM Tabla ORDER BY Id DESC
     
    ¡Bueno! Dada las dos preguntas diferentes que ha formulado el usuario "Tomy El grande", digamos que tu respuesta sería una posible solución para la segunda pregunta. ;-)
     
     

    Enrique Martínez
      [MS MVP - VB]

    miércoles, 11 de mayo de 2011 6:33