La réinitialisation du numéro de Ligne selon les données de l'enregistrement de changement

j'ai obtenu l'ensemble des données comme suit

name  date  
x     2014-01-01
x     2014-01-02
y     2014-01-03
x     2014-01-04

et je vais essayer d'obtenir ce résultat

name  date           row_num
x     2014-01-01      1
x     2014-01-02      2
y     2014-01-03      1
x     2014-01-04      1

j'ai essayé d'exécuter cette requête

select name,
       date,
       row_number () over (partition by name order by date) as row_num
from myTBL

mais malheureusement je obtenir ce résultat

name  date           row_num
x     2014-01-01      1
x     2014-01-02      2
y     2014-01-03      1
x     2014-01-04      3

s'il vous plaît aider.

la base de données - sql server, oracle, etc. ? quelle est la logique de l'attribution du numéro de ligne de cette façon ? qu'essayez-vous de faire enfin ?
Votre partition by énoncé dit que les partitions sont basées uniquement sur name. Le résultat obtenu est le résultat que vous avez demandé. Le résultat vous semble vouloir, c'est que les partitions remis à zéro à chaque fois qu'un exécuter de name changements. Je ne pense pas que vous pouvez le faire avec une simple fonction de fenêtre. Vous aurez besoin d'un ou deux niveaux de sous-requête.
Pour les futurs askers, cela tombe dans la classe de problèmes connus sous le nom de les lacunes-et-îles.

OriginalL'auteur erezlale | 2014-12-28