OK,
Ce sera dans :
#reportdata de MISE À JOUR
PLACER DataChange = #reportdata. Données - isnull (prev.data, @prevval)
Du #ReportData
externes gauches joignent le prev de #reportdata sur #reportdata.id - 1 = prev.id
S'il n'y a pas une valeur précédente, alors nous pouvons faire :
#reportdata de MISE À JOUR
PLACER DataChange = #reportdata. Données - isnull (prev.data, #reportdata. Données)
Du #ReportData
externes gauches joignent le prev de #reportdata sur #reportdata.id - 1 = prev.id
Cela signifie également que nous n'avons besoin plus :
@PrevVal RÉGLÉ = isnull ((converti CHOISI de principal 1 (vrai, données) * @grate
De HistorianDB.dbo.TLData
LÀ OÙ TLInstance = @Meter
ET horodateur <�> ET Type=0
ET (données) =1 isnumeric
ORDRE PAR le desc d'horodateur), 0)
Je pense l'insertion originale dans la table de reportdata a inclus les entrées ealier qui est une autre option - réduire au minimum n'importe quelle inexactitude par l'openin la gamme un peu pour la mise à jour, puis s'assurer que nous rendons compte seulement de la gamme spécifique (ou enlève hors des rangées de gamme après la mise à jour).