numero - Cómo devolver un número de grupo incremental por grupo en SQL
sql server obtener numero de fila (2)
Creo que estás buscando esto:
ROW_NUMBER() OVER (PARTITION BY hl.id ORDER BY hl.ts_DateTime) AS RowFilter
Me gustaría crear una consulta de datos en SQL para numerar incrementalmente grupos de filas, agrupados en una fecha de tiempo común y mantener los "números de grupo" incrementándose en la próxima fecha y así sucesivamente. Estos "números de grupo" no deben resetearse para cada grupo como he visto al usar la partición por instrucción. Aquí está mi muestra de datos:
ts_DateTime |ID |Value|RowFilter|RequiredResult
--------------------------
2013/01/09 09:23:16 |8009 |0 |1 |1
2013/01/09 09:23:16 |8010 |0 |2 |1
2013/01/09 09:23:16 |8026 |0 |3 |1
2013/01/09 09:23:22 |8026 |0 |1 |2
2013/01/09 09:23:28 |8009 |0 |1 |3
2013/01/09 09:23:28 |8010 |0 |2 |3
2013/01/09 09:23:28 |8026 |0 |3 |3
2013/01/09 09:27:03 |8009 |0 |1 |4
2013/01/09 09:27:03 |8010 |0 |2 |4
2013/01/09 09:27:03 |8026 |0 |3 |4
2013/01/09 09:27:09 |8009 |0 |1 |5
2013/01/09 09:27:09 |8010 |0 |2 |5
2013/01/09 09:27:09 |8026 |0 |3 |5
2013/01/09 09:27:15 |8009 |0 |1 |6
2013/01/09 09:27:15 |8010 |0 |2 |6
2013/01/09 09:27:15 |8026 |0 |3 |6
La consulta que estoy usando para obtener estos resultados es:
select hl.ts_DateTime, hl.Tagname as [ID], hl.TagValue as [Value],
ROW_NUMBER() OVER (PARTITION BY hl.ts_datetime ORDER BY hl.tagname) AS RowFilter
from Table1 hl
Básicamente, mirando la columna RowFilter, obtengo un número de ROW único por partición ts_DateTime
. Lo que realmente necesito es que para cada partición ts_DateTime, la columna RowFilter se parezca a la columna de resultados requeridos.
no deberías estar usando ROW_NUMBER()
,
- use
DENSE_RANK()
lugar - eliminar
PARTITION BY
consulta,
SELECT hl.ts_DateTime,
hl.Tagname as [ID],
hl.TagValue as [Value],
DENSE_RANK() OVER (ORDER BY ts_datetime) AS RowFilter
FROM Table1 hl
ORDER BY RowFilter