Si vous avez l'instruction select ci-dessous où la PK est la clé primaire:SQL: sans un curseur, comment sélectionner des enregistrements en faisant un id entier unique (identité similaire) pour des dups?
select distinct dbo.DateAsInt(dateEntered) * 100 as PK,
recordDescription as Data
from MyTable
et la sortie est quelque chose comme ceci (les premiers chiffres sont espacés pour plus de clarté):
PK Data
2010 01 01 00 New Years Day
2010 01 01 00 Make Resolutions
2010 01 01 00 Return Gifts
2010 02 14 00 Valentines day
2010 02 14 00 Buy flowers
et vous voulez afficher quelque chose comme ceci:
PK Data
2010 01 01 01 New Years Day
2010 01 01 02 Make Resolutions
2010 01 01 03 Return Gifts
2010 02 14 01 Valentines day
2010 02 14 02 Buy flowers
est-il possible de faire le « 00 » dans le PK ont un effet de nombre « d'identité » dans un seul sel ect? Sinon, comment pouvez-vous incrémenter le nombre de 1 pour chaque activité trouvée pour cette date?
Je pense déjà en tapant pour essayer quelque chose comme Sum (cas quand ?? puis 1 fin) avec un groupe par.
Edit: (réponse fournie par JohnFX ci-dessous)
Ce fut la réponse finale:
select PK + row_number() over
(PARTITION BY eventid order by eventname) as PK,
recordDescription
from (select distinct -- Removes row counts of excluded rows)
dbo.DateAsInt(dateEntered) as PK,
recordDescription as Data
from MyTable) A
order by eventid, recordDescription
Ceci a un grand potentiel de succès. Jusqu'à présent, je reçois un nombre distinct pour chaque date, mais j'essaie toujours de les obtenir à chaque début à 1 et incrémenter de un. (Je reçois des valeurs comme 5,7,15,2). Je lis sur les options que je tape. Réponse très prometteuse. Merci. –
Certainement une bonne réponse. J'ai dû déplacer le distinct à une sous-requête, puis utiliser row_number sur la partition sur le résultat. Travaillé parfaitement. Le row_number comptait les lignes avant que le distinct ne soit appliqué. Merci! –
Cela dit, je suis sûr qu'il existe des options pour Row_Number() pour ne pas compter les lignes exclues. Aucune idée comment le faire encore (simuler le même effet que la sous-requête distincte) –