Je voudrais créer une requête de données en SQL pour numéroter de manière incrémentielle des groupes de lignes, groupées sur une date/heure commune et garder les "numéros de groupe" incrémentés sur la prochaine date et ainsi de suite. Ces "numéros de groupe" ne doivent pas être réinitialisés pour chaque groupe comme je l'ai vu lors de l'utilisation de la partition par instruction. Voici mes exemples de données:
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 requête que j'utilise pour obtenir ces résultats est:
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
Donc, en gros, en regardant la colonne RowFilter, j'obtiens un numéro de ligne unique par ts_DateTime
cloison. Ce dont j'ai réellement besoin, c'est que pour chaque ts_DateTime
partitionne la colonne RowFilter devrait ressembler à la colonne de résultat requise.
vous ne devriez pas utiliser ROW_NUMBER()
,
DENSE_RANK()
à la placePARTITION BY
question,
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
Je pense que vous cherchez ceci:
ROW_NUMBER() OVER (PARTITION BY hl.id ORDER BY hl.ts_DateTime) AS RowFilter