Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Group by - Order by (https://www.clubdelphi.com/foros/showthread.php?t=76378)

galletin 27-10-2011 10:24:02

Group by - Order by
 
Buenos días,

tengo una consulta simple:
  • Select Parámetro, Proveedor, sum(Valor)
    From Mediciones
    Where Año = 2011
    And Parámetro = 'x'
    Group by Parámetro, Proveedor
Me devuelve valores en el siguente orden:
  • x, pepe, 5
  • x, luis, 7
  • x, juan, 2
La cuestión es simple, quiero ordenador por el campo "Valor" pero si incluyo una cláusula Order by me obliga a meter ese campo también en el Group by y entonces ya no me suma los valores de cada proveedor.

¿?
Gracias.

Ñuño Martínez 27-10-2011 10:44:01

No te deja porque intentas ordenar por el contenido de Valor, no por la suma. Pon un nombre a las sumas, así:

Código SQL [-]
Select Parámetro, Proveedor, sum(Valor) AS SumaValores
From Mediciones
Where Año = 2011
And Parámetro = 'x'
Group by Parámetro, Proveedor
ORDER BY SumaValores
Debería funcionar.

Casimiro Noteví 27-10-2011 11:30:51

Cita:

Empezado por galletin (Mensaje 416849)
Buenos días

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

galletin 27-10-2011 12:23:17

Gracias Nuño,

pero estoy haciendo pruebas en un Access, le pongo el alias "SumaValor" a la función de agregado pero al incluirla en el Order by me pregunta "Introduzca el parámetro SumaValor", es decir, no lo reconoce...

galletin 27-10-2011 13:01:10

Acabo de probarlo en SQL y funciona perfectamente... es Access el que no reconocer los alias en el Order by

Muchas gracias ;-)

Cita:

Empezado por Ñuño Martínez (Mensaje 416851)
No te deja porque intentas ordenar por el contenido de Valor, no por la suma. Pon un nombre a las sumas, así:


Código SQL [-]Select Parámetro, Proveedor, sum(Valor) AS SumaValores
From Mediciones
Where Año = 2011
And Parámetro = 'x'
Group by Parámetro, Proveedor
ORDER BY SumaValores



Debería funcionar.


Casimiro Noteví 27-10-2011 13:44:08

Prueba con order by 3
El 3 es la posición del dato en el select:
select (1)parametro, (2)proveedor, (3)sum(valor)

galletin 27-10-2011 14:30:17

Efectivamente Casimiro, con el "Order by 3" funciona también en el Access.

Muchas gracias.

Cita:

Empezado por Casimiro Notevi (Mensaje 416866)
Prueba con order by 3
El 3 es la posición del dato en el select:
select (1)parametro, (2)proveedor, (3)sum(valor)



La franja horaria es GMT +2. Ahora son las 04:51:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi