0
votes

Calculer la différence entre les lignes et garder la première ligne toujours 0?

Je dois calculer la différence entre les valeurs de ligne dans le tableau X (SQL Server)

Tableau x P> xxx pré>

donc j'ai écrit la requête SQL suivante P> xxx pré>

et le résultat est p> xxx pré>

ce que je veux, c'est de garder la différence de première rangée toujours comme 0 p>

ID  A    Difference
1   100   0
2   200  -100
3   300  -100
4   400  -100


1 commentaires

Il suffit d'envelopper l'expression entière d'expression A - a) ... à l'intérieur du coalesce () .


3 Réponses :


1
votes

Vous pouvez essayer la requête suivante.

pour ce type de requête La clause de la commande est importante basée sur la colonne et la commande appliquée par clause Ascendant ou descendant Le résultat peut être différent. xxx

Démo en direct


0 commentaires

2
votes

Vous pouvez essayer de passer la valeur ð ° pour le paramètre code> par défaut code> de la fonction de fenêtre code> code> fenêtre. Comme il est expliqué dans Documentation , le paramètre code> par défaut code> est la valeur pour revenir lorsque le décalage est au-delà de la portée de la partition em> (et pour la première rangée, la La ligne précédente est au-delà de cette portée).

Table: P>

ID  A   Difference
------------------
1   100 0
2   200 -100
3   300 -100
4   400 -100


0 commentaires

1
votes

Merci à @zhorov pour le schéma de la table, les données

Vous pouvez utiliser Isnull ou Coalise pour arriver à la différence. P>

+----+-----+------------+
| ID |  A  | difference |
+----+-----+------------+
|  1 | 100 |        100 |
|  2 | 200 |        100 |
|  3 | 300 |        200 |
|  4 | 400 |        300 |
+----+-----+------------+


0 commentaires