J'ai une table avec des données horodatées.
SELECT lag(col1) OVER (ORDER BY t_stamp ASC) + col2 AS col3 FROM table1
4 Réponses :
Je pense que vous voulez une somme cumulative:
Nan. L'équation n'a été indiquée que comme exemple d'illustrer le résultat de Col3 dépendra d'une valeur d'une autre colonne de la ligne précédente. Ce n'est pas le calcul souhaité que je veux effectuer.
Créez les 3 premières colonnes et utilisez le décalage pour créer le dernier col. P>
Comment obtenir des données de ligne précédentes dans SQL Server a> p>
J'ai déjà utilisé le décalage pour calculer les valeurs. Si vous lisez ma question plus soigneusement, vous verrez cela. La question n'est pas de savoir comment calculer les valeurs mais comment mettre à jour le tableau après la calcul des valeurs.
Utiliser les sous-ties .. Solvez-vous. Voici un exemple
select col2+p_col1 from ( SELECT col1, col2, lag(col1) OVER (ORDER BY t_stamp ASC) as p_col1 FROM table1 ) t
J'ai déjà utilisé le décalage pour calculer les valeurs. Si vous lisez ma question plus soigneusement, vous verrez cela. La question n'est pas de savoir comment calculer les valeurs mais comment mettre à jour le tableau après la calcul des valeurs.
Il vous suffit d'utiliser la clause depuis la clause avec la requête que vous avez déjà:
UPDATE test set col3 = prev_col1 + prev_col2 FROM ( SELECT t_stamp, lag(col1) OVER (ORDER BY t_stamp ASC) prev_col1, lag(col2) OVER (ORDER BY t_stamp ASC) prev_col2 FROM test) prev WHERE prev.t_stamp = test.t_stamp;
Merci. Cela a fonctionné comme un charme. Une question de clarification cependant. Vous avez dit dans votre réponse pour utiliser une clause "Utilisation", mais il n'y a pas d'utilisation de la clause dans votre solution. Faute de frappe?
Oui, désolé à ce sujet, j'ai réparé le texte.
Veuillez fournir des échantillons de données et des résultats souhaités pour illustrer votre calcul.