Asignar número en ORDEN del resultado de una consulta
En el resultado de una consulta asignar el "1º" al resultado más alto y así sucesivamente-
1 Respuesta
Este enlace de Mihura, en él lo explica de forma sencilla: http://www.accessaplicaciones.com/ejemplos.html#sq02
O puedes ver estas otras respuestas:
Autonumerar de acuerdo a campos repetidos
Campo que indique orden de registros de consulta
Y seguro que hay más, porque es un tema que se trató bastante en este foro.
Un saludo.
Sigo sin conseguir entender lo que me envías, creo busco algo más sencillo, te pongo mi consulta
SELECT [Inscripciones Consulta Consulta].Jugador, [Inscripciones Consulta Consulta].ResultadoPR
FROM [Inscripciones Consulta Consulta]
GROUP BY [Inscripciones Consulta Consulta].Jugador, [Inscripciones Consulta Consulta].ResultadoPR
ORDER BY [Inscripciones Consulta Consulta].ResultadoPR DESC;
Necesito crear un campo calculado que me diga quien es el 1º, 2º, etc
En el enlace de Mihura tienes explicado lo que debes hacer: copiar la función en un módulo, y liego hacer la consulta de unión como la del ejemplo (obviamente con tus campos más la llamada a la función)
En el primero de los enlaces a otra respuestas, tienes cómo hacerlo usando la función DCount. Solo tienes que añadir un campo a tu consulta con esa función, y como criterio poner un campo que sea único por registro.
Dado que tu quieres establecer el orden en una consulta de datos agrupados, vas a tener que hacerlo sobre una nueva consulta sobre esa consulta.
sigo sin entenderte, llevo 20 años haciendo bases de datos, pero no escribo código nunca, ¿es posible me hables sin usar código?
SELECT [Inscripciones Consulta Consulta].Jugador, [Inscripciones Consulta Consulta].ResultadoPR
FROM [Inscripciones Consulta Consulta]
ORDER BY [Inscripciones Consulta Consulta].ResultadoPR DESC;
Claro que te puedo hablar sin escribir código, porque el código ya lo tienes en los enlaces que te pasé, y repetirlo me parece una tontería.
Pero si quieres código, no hay problema, ahí te lo dejo, y explicado pasito a pasito sobre el primer enlace (ya verás que no era tan difícil):
1º/ En el ejemplo dice:
La rutina la tenemos que crear en un módulo independiente:
Copias la siguiente función en un módulo independiente (imagino que sabrás cómo):
'--------------------------------------------------------------------------------------------- ' Autor : JESUS MANSILLA CASTELLS -Mihura- '--------------------------------------------------------------------------------------------- Public Function RT_NumerarSQL(nDato) As Long 'variable que no se pierde entre las distintas llamadas Static nORDEN As Long If IsNull(nDato) Then 'si nDato es nulo: variable a cero y salida nORDEN = 0 Exit Function End If nORDEN = nORDEN + 1 RT_NumerarSQL = nORDEN End Function
2º/ Sigue el ejemplo:
¿Cómo funciona?:
- Primero le pasamos un valor nulo, esto hace que se inicie a cero la variable estática que será nuestro contador
- Después al pasarle un valor distinto de nulo simplemente suma una unidad a la variable estática anterior y nos la devuelve como valor de la función.
Para dar los dos pasos a la vez usaremos una consulta de unión:
SELECT Id, Nombre, RT_NumerarSQL(Null) AS NumOrden FROM TFacturas WHERE 1 = 0
UNION ALL
SELECT Id, Nombre, RT_NumerarSQL(Id) AS NumOrden FROM TFacturas
Como te decía solo tienes que crear la consulta de unión siguiendo el modelo. Además, luego te decía que en tu caso, por ser de totales, mejor sería hacerlo con una nueva consulta.
En tu caso, si tu consulta se llama CResultado, quedaría:
SELECT Jugador, ResultadoPR, RT_NumerarSQL(Null) AS NumOrden FROM CResultado WHERE 1 = 0 UNION ALL SELECT Jugador, ResultadoPR, RT_NumerarSQL(Jugador) AS NumOrden FROM CResultado
que como comprobarás, es idéntica a la del ejemplo, pero con tus campos y tablas/consultas.
3º/ Guardas y ya tienes tu consulta numerada.
En los módulos que tengas en la BD si la tienes repetida.
O desde el editor de VBA, Menú Depuración -> Compilar NombreBD
Hay algo que no haces bien... Ese error puede ser porque tengas dos consultas que se llaman igual, o a la nueva consulta también la llamas CResultado...
Mira este ejemplo, y haz lo mismo: https://drive.google.com/file/d/15u0WNvgL01SRCYI4D7cOyB9YRkyE61Ct/view?usp=sharing
- Compartir respuesta