Acceda a SQL para hacer un incremento en la consulta SELECT

Tengo una consulta SQL que me da resultados X, quiero que la salida de la consulta tenga un recuento llamado, lo que hace que la consulta sea así:

count id section 1 15 7 2 3 2 3 54 1 4 7 4 

¿Cómo puedo hacer que esto suceda?

De acuerdo, creo que esto se acerca lo suficiente como para constituir una respuesta: el siguiente enlace especifica dos enfoques: http://www.techrepublic.com/blog/microsoft-office/an-access-query-that-returns-every-nth- grabar/

El primer enfoque asume que tiene un valor de ID y usa DCount (similar a la solución de @ mikeY).

El segundo enfoque supone que está bien creando una function de VBA que se ejecutará una vez para CADA logging en el set de loggings, y deberá reiniciarse manualmente (con algunos VBA) cada vez que desee ejecutar el conteo, ya que utiliza un "estático". "valor para ejecutar su contador.

Siempre que tenga numbers razonables (cientos, no miles) o loggings, el segundo enfoque parece ser el más fácil / más poderoso para mí.

Entonces, en tu ejemplo, "contar" es el número de secuencia derivado? No veo qué patrón se usa para determinar que el recuento debe ser 1 para id = 15 y 2 para id = 3.

 count id section 1 15 7 2 3 2 3 54 1 4 7 4 

Si la identificación contiene valores únicos, y ordera por ID, podrías tener esto:

 count id section 1 3 2 2 7 4 3 15 7 4 54 1 

Me parece que el enfoque DSum de mikeY podría funcionar. O podría utilizar un enfoque diferente para una consulta de sorting como describió Allen Browne en esta página

Editar : puede usar DCount en lugar de DSum. No sé cómo se compararía la velocidad entre los dos, pero DCount evita crear un campo en la tabla simplemente para almacenar un 1 por cada fila.

 DCount("*","YourTableName","id<=" & [id]) AS counter 

Ya sea que vaya con DCount o DSum, los valores del contador pueden include duplicates si los valores de identificación no son únicos. Si id es una key principal, no se preocupe.

Francamente, no entiendo qué es lo que quiere, pero si todo lo que quiere es un número de secuencia que se muestra en su formulario, puede usar un control vinculado a la propiedad CurrentRecord del formulario. Un control con ControlSource =CurrentRecord tendrá un "número de logging" siempre exacto que está en secuencia, y que se actualizará cuando cambie el origen de los loggings del formulario (que puede o no ser deseable).

A continuación, puede usar ese número para navegar por el formulario, si lo desea.

Pero puede que esto no se parezca a lo que está buscando, simplemente no puedo decir a partir de la pregunta que ha publicado y las "aclaraciones" en los comentarios.

El único truco que he visto es que si tienes un campo de identificación secuencial, puedes crear un nuevo campo en el que el valor de cada logging sea 1. Luego, harás una sum continua de ese campo.

Añadir a su consulta

DSum ("[Nuevo campo con 1 en él]", "[Nombre de tabla]", "[Campo ID] <=" & [Campo ID]) como conttwigrcha

Eso debería producir un recuento secuencial en Access, que es lo que creo que quieres.

HTH.

(Robado de Rob Mills aquí: http://www.access-programmers.co.uk/forums/showthread.php?p=160386 )

Puede usar ROW_NUMBER () que se encuentra en SQL Server 2008

 SELECT ROW_NUMBER() OVER (ORDER By ID DESC) RowNum, ID, Section FROM myTable 

Luego RowNum muestra la secuencia de numbers de fila.

Esta function puede invocarse desde cada logging si está disponible desde un module.

Ejemplo: incrementingCounterTimeFlaged (10, [anyField]) debería proporcionar a sus filas de consulta un incremento incremental desde 0.

 'provides incrementing int values 0 to n 'resets to 0 some seconds after first call Function incrementingCounterTimeFlaged(resetAfterSeconds As Integer,anyfield as variant) As Integer Static resetAt As Date Static i As Integer 'if reset date < now() set the flag and return 0 If DateDiff("s", resetAt, Now()) > 0 Then resetAt = DateAdd("s", resetAfterSeconds, Now()) i = 0 incrementingCounterTimeFlaged = i 'if reset date > now increments and returns Else i = i + 1 incrementingCounterTimeFlaged = i End If End Function 

autoincrement en SQL

 SELECT (Select COUNT(*) FROM table A where A.id<=b.id),B.id,B.Section FROM table AS B ORDER BY B.ID Asc 
Intereting Posts