2 votes

Créer une colonne avec Conditional Recursive SQL / basée sur une condition

Considérons le tableau ordonné par id avec colonne EstSatisfait .

ID

EstSatisfait

1

0

2

1

3

0

4

0

5

1

6

0

....

...

Je voudrais créer une autre colonne État qui prend initialement la valeur 0 et la fait varier entre 0 et 1, uniquement lorsque la valeur de Satisfait est égal à 1, comme dans le tableau ci-dessous.

ID

EstSatisfait

État

1

0

0

2

1

1

3

0

1

4

0

1

5

1

0

6

0

0

....

...

...

J'ai essayé la fonction LAG() ou le CTE récursif, mais j'ai malheureusement échoué. La solution la plus proche que j'ai trouvée est Sélection SQL conditionnelle et récursive mais je n'ai pas réussi à le convertir pour qu'il réponde à mes besoins.

3voto

Gordon Linoff Points 213350

Si je comprends bien, vous voulez une somme cumulée de issatisfied -- et le reste une fois divisé par 2 :

select t.*,
       ( sum(issatisfied) over (order by id) % 2 ) as state
from t;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X