SQL Server returnne null dans select lorsque la valeur est répétée

J'ai une requête returnnant des actions d'user avec la date d'action, cependant, je veux que ma requête returnne toutes les actions avec leurs dates mais renvoient la valeur null pour la date d'action quand la date est égale à la date précédente, par exemple

action date gone shopping 10/1/2011 swimming 10/1/2011 riding 11/1/2011 so i want my select to return rows like this action date gone shopping 10/1/2011 swimming NULL riding 11/1/2011 

quelqu'un a une idée pour mettre en œuvre cela?

Cela ressemble à une situation où vous voudriez que cette logique esthétique soit traitée dans la couche d'application, pas dans la couche de database.

Cela peut causer des problèmes si vous changez l'ordre des loggings, ou quelque chose en aval ajoute une logique supplémentaire comme un GROUP BY .

C'est généralement une mauvaise idée de supprimer des données sans raison . Vous serez effectivement découpler l' action de la date pour tout autre process qui consum vos données en aval.

Vraisemblablement c'est parce que c'est ainsi que vous voulez afficher datatables?

Dans ce cas, faites-le dans votre code d'interface user, pas dans vos requêtes SQL. C'est possible en utilisant PARTITION et ORDER BY mais vous vous refindez avec une requête SQL très compliquée.

 declare @T table ( [action] varchar(20), [date] date ) insert into @T select 'gone shopping', '10/1/2011' union all select 'swimming', '10/1/2011' union all select 'riding', '11/1/2011' ;with cte as ( select [action], [date], row_number() over(order by [date], [action]) as rn from @T ) select C1.[action], case when C2.[date] is null then C1.[date] end as [date] from cte as C1 left outer join cte as C2 on C1.rn = C2.rn + 1 and C1.[date] = C2.[date] order by C1.rn