Comment mettre à jour datatables des colonnes en fonction des lignes précédentes d'un set de résultats

Je suis nouveau sur le server MS SQL et je veux écrire une requête pour transformer datatables de LHS en RHS. (comme montré dans l'image ci-dessous)

entrez la description de l'image ici

Je me suis référé aux réponses données ici et ici, mais je n'ai pas pu find la requête complètement à cause du regroupement des résultats sur le même identifiant.

Toute aide est fortement appréciée.
Merci.

Vous n'avez pas besoin group by clause

Sur la from clause , vous pouvez utiliser 2 auto join pour searchr les lignes suivantes et précédentes à l'aide de l'index.

Sur la select clause il suffit d'adapter case when statement pour implémenter vos règles spécifiques comme ceci (non testé, mais l'idée est ici) :

 create table RHS as select Curr.policy, case when prev.EventDate is null then Curr.policyIssueDate else EventDate end as StartDate, case when next.EventDate is null then CURDATE() else EventDate end as EndDate from LHS Curr left join LHS next on Curr.INDEX+1= next.INDEX and Curr.policy = next.policy left join LHS prev on Curr.INDEX-1= prev.INDEX and Curr.policy = prev.policy 

Pour aujourd'hui date:

  • Mysql: CURDATE ()
  • SQLServer: getdate ()

Remarque: vous pouvez également utiliser la fonction de window lead et la window de lag .