J'ai une base de données sql server 2008 r2.serveur sql sélectionnez la première occurrence de changement de données
J'ai une table appelée hystrealdata
dans laquelle sont stockées les données de production d'une machine automotiv tous les n secondes. Ainsi, il est structuré comme celui-ci:
dataregvalue timestamp
--------------------------------------------------------------------------
0 1507190476
0 1507190577
0 1507190598
0 1507190628
1 1507190719
1 1507190750
1 1507190780
1 1507190811
1 1507190841
2 1507190861
2 1507190892
2 1507190922
2 1507190953
2 1507190983
5 1507190477
je dois sélectionner la première occurrence d'un dataregvalue
dans la première rangée, la différence entre la prochaine dataregvalue et le précédent. A côté de ces données je voudrais avoir le premier horodatage dans lequel dataregvalue canges. Un exemple de sélection serait:
data_change timestamp
---------------------------
0 1507190476 <- first time in which the dataregvalue is 0
1 1507190719 <- first time in which the dataregvalue changes
1 1507190861 <- first time in which the dataregvalue changes
3 1507190477 <- first time in which the dataregvalue changes
Si cela est trop difficile, il serait bien d'avoir des informations sur la différence entre dataregvalues dans une nouvelle colonne comme ceci:
dataregvalue data_change timestamp
---------------------------------------------
0 0 1507190476
1 1 1507190719
2 1 1507190861
5 3 1507190477
Comment cela doit être fait? Merci d'avance!
Pourriez-vous s'il vous plaît examiner vos exemples? D'où vient le data_change 3? Pourquoi 1 est listé deux fois et 5 ne figure pas du tout dans l'exemple 1? En outre, parlons-nous d'un vrai timestamp ou est-ce quelque chose créé par le système de livraison? En d'autres termes: pouvons-nous calculer avec elle? – Tyron78
Pour la valeur de données 5, êtes-vous certain de prévoir l'horodatage 1507190861? La première fois qu'il passe de 2 à 5, c'est 1507190477 selon vos données. –
Tyron78, les changements de données sont la différence entre le dataregvalue à cet horodatage et son précédent. Donc si à timestamp = 1507190983 la valeur de datareg est 2, la suivante à timestamp 1507190477 est 5, la différence entre 5 et 2 est 3. C'est pourquoi 3 se produit. Rigerta Demiri vous avez raison. Je mets à jour la question. –