Frage : Sql-SP ändern, um Anfangsanfangswert zu ignorieren

Ich benutze das SP 2 unten, um Werte von einer Tabelle und von den Unterschieden zu vergleichen, ausarbeite Kosten ETC…

The Problem, das ich bin habe, dass, wenn die HistorianDB.TLData DATEN-Spalte nicht von null abfährt, der erste Wert, der durch das SP zurückgebracht wird, sehr high.

zum Beispiel ist, die TLData Tabelle bin Journaldaten von einem Datenlogger jedes 15mins. Wenn der erste angemeldet zu werden Wert, der Datenspalte 2000 ist, dann erhöht der Wert 10 Maßeinheiten jede Probe 15min. Alle Proben zeigen eine ordentliche Linie auf dem Diagramm, das 10. anzeigt. Jedoch zeigt das erste datapoint auf dem Diagramm eine sehr große Spitze von 2000, wie es den Anfangsanfang von 2000 sieht, da eine Änderung von der Null (oder 0), an 2000.

So, was ich benötige, das SP zu ändern ist, damit ignoriert es immer, vergleicht der erste Vergleich von der Null (oder 0 und nichts), zur ersten Reihe und nur Ro1 und row2.

Hope dieses bildet sense.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
USE [EnergySuiteDB]
GEHEN
/****** Gegenstand:  StoredProcedure [dbo]. [GetCostPerPeriod] Index-Datum: 07/09/2010 15:32: 24 ******/
ANSI_NULLS AN EINSTELLEN
GEHEN
QUOTED_IDENTIFIER AN EINSTELLEN
GEHEN
VERFAHREN [dbo] ÄNDERN. [GetCostPerPeriod] @sDate DATUM/UHRZEIT, @Meter varchar (50), @GasRate int, @pf Hin- und Herbewegung, @util varchar (50), @reportselection Putzfrau (1), @co2 Hin- und Herbewegung, @Carbon Hin- und Herbewegung

WIE
ANFANGEN

--Ein Energienfaktor von 0 wirft Ausnahme, also muss dieser um kümmert werden
wenn isnull (@pf, 0) gesetztes @pf =0 = 1

-- erklären und einige Variablen zu gründen, die auf ankommenden Parametern basieren

@PREVVAL NUMERISCHES ERKLÄREN (12, 4)
das numerische @grate erklären (12.4)
@edate Datum/Uhrzeit erklären
@intervals int erklären

@sdate = Bekehrten (Putzfrau (8), @sdate, 112) einstellen   -- sicherstellen, dass Zeit „beim Anfang“ des Zeitraums ist
Wenn @reportselection = „M“ @sdate = DATEADD einstellte (Monat, DATEDIFF (Monat, 0, @sdate), 0)
Wenn @reportselection = „Y“ einstellte @sdate = datename (Jahr, @sdate) + „0101“

@edate = Bekehrten (Putzfrau (8), @sdate, 112) einstellen + „23:59: 59.997“
Wenn @reportselection = „W“ @edate = Bekehrten einstellte (Putzfrau (8), @sdate+6,112) + „23:59: 59.997“
Wenn @reportselection = „M“ @edate = DATEADD einstellte (Monat, DATEDIFF (Monat, -1, @sdate), 0) - 0.00000005
Wenn @reportselection = „Y“ @edate = datename (Jahr, @sdate) + „1231 23:59 einstellte: 59.997“

@intervals = Tag (dateadd (Monat, datediff (Monat, - 1, @sdate), 0) einstellen - 1) 
Wenn @reportselection = „D“ @intervals = @intervals * 96 einstellte  -- 96 Viertelstunden an einem Tag.
Wenn @reportselection = „Y“ @intervals = 1 einstellte

wenn isnull (@gasrate, 0) = 1
   @grate einstellen = 11.0786 -- 1.02264 * 39/3.6
sonst
   @grate einstellen = 1.0

-- unseren Tempreport-Datenauszug von der Hauptgeschichtentabelle jetzt verursachen

WENN OBJECT_ID („tempdb. #ReportData“, „U ") IST NICHT UNGÜLTIGES TROPFEN-TABELLE #ReportData  -- sollte nicht erforderlich sein
 
TABELLE #ReportData VERURSACHEN
(
    Primärschlüssel Identität der Identifikation-int,
    Zeitstempel DATUM/UHRZEIT,
    Hundertstel INT,      
    Daten NUMERISCH (12, 4),
    DataChange NUMERISCH (12, 4),
    DateStamp Datum/Uhrzeit
)

-- unsere Reportdaten bevölkern

IN #ReportData (Zeitstempel, Hundertstel, Daten, Datestamp) EINSETZEN
Zeitstempel, Hundertstel, der Bekehrte (real, Daten) * @grate, Fall VORWÄHLEN wenn @reportselection = „y-“ dann Bekehrter (Putzfrau (6), Zeitstempel, 112) + sonst Bekehrter ' 01 ', Ende (der Putzfrau (8), Zeitstempel, 112)
VON HistorianDB.dbo.TLData 
WO TLInstance = @Meter 
UND Zeitstempel zwischen @sdate und @edate
UND Type=0 
UND isnumeric (Daten) =1
AUFTRAG DURCH Zeitstempel, recordnumber        

-- jetzt vorbereiten, unsere Daten zu aktualisieren, um den Unterschied zwischen Messinstrumentmesswerten zu berechnen, aber wir benötigen einen Ausgangspunkt…

GESETZTES @PrevVal = isnull ((AUSERWÄHLTER Bekehrter der Oberseite 1 (real, Daten) * @grate
                        VON HistorianDB.dbo.TLData 
                        WO TLInstance = @Meter 
                        UND Zeitstempel < @sdate
                        UND Type=0 
                        UND isnumeric (Daten) =1 
                        AUFTRAG DURCH Zeitstempel desc), 0)

-- das Update tun unsere Daten, um den Unterschied zwischen Messinstrumentmesswerten und Kosten zu berechnen

#reportdata AKTUALISIEREN
DataChange = #reportdata EINSTELLEN. Daten - isnull (prev.data, @prevval)
Vom #ReportData 
linke äußere schließen sich #reportdata prev auf #reportdata.id - 1 = prev.id an

-- jetzt können wir den Report laufen lassen

; Mit Zeiträumen wie
(
   Fall wenn @reportselection = „D“ dann dateadd (Minute, Nr. * 15, @sdate) sonst Fall wenn @reportselection = „Y“ dann dateadd (Monat, Zahl, @sdate) sonst dateadd (Tag, Zahl, @sdate) Endenende als PSDate vorwählen 
   , Fall, wenn @reportselection = „D“ dann dateadd (Minute, Nr. * 15 + 15, @sdate) - 0.00000005 sonst Fall, wenn @reportselection = „Y“ dann DATEADD (Monat, DATEDIFF (Monat, -1, dateadd (Monat, Zahl, @sdate)), 0) - 0.00000005 sonst Bekehrter (Putzfrau (8), @sdate+number, 112) + „23:59: “ Ende des Endes 59.997, wie PEDate 
   , Fall, als @reportselection = „D“ dann (datename (dw, @sdate), 03) + ' „+ Bekehrter verließ (Putzfrau (8), @sdate, 03) +right (Bekehrter (Putzfrau (19), dateadd (Minute, Nr. * 15, @sdate), 100), 8) sonst Fall, als @reportselection = „Y“ dann verließ (datename (Monat, dateadd (Monat, Zahl, @sdate)), 3) +“ „+ verließ datename (Jahr, @sdate) sonst (datename (dw, dateadd (Tag, Zahl, @sdate)), 3) +“ '+ Endenende des Bekehrten (Putzfrau (8), dateadd (Tag, Zahl, @sdate), 03) als PSName 
   , Fall wenn @reportselection = „d-“ sonst Fall dann 1.0/96.0 wenn @reportselection („M“, „W ") dann im sonst Endenende des Tag 1.0 (dateadd (Monat, number+datediff (Monat, -1, @sdate), 0) - 1) als dayparts
   vom Meister. .spt_values n mit (nolock) 
   wo Art = „p“
   und Fall wenn @reportselection = „D“ dann dateadd (Minute, Nr. * 15, @sdate) sonst Fall wenn @reportselection = „Y“ dann dateadd (Monat, Zahl, @sdate) sonst dateadd (Tag, Zahl, @sdate) Endenende < @edate
)
AUSERWÄHLT 
    PSname als Datum,
    SUMME (isnull (r1.datachange, 0)) ALS day_data,
    SUMME (isnull (r1.datachange, 0))*@CO2 ALS CO2_data,
    SUMME (isnull (r1.datachange, 0))*@Carbon ALS Carbon_data,
    SUMME (isnull (r1.datachange, 0) *chargerate) ALS DataCost,
    SUMME (isnull (r1.datachange, 0) *levy) als TotalLevy,
    maximales (Fall, wenn r1.datestamp ungültiges dann 0 sonst caprate Ende ist),/@intervals als TotalCap,                           
    maximal (Fall, wenn r1.datestamp ungültiges dann 0 sonst chargecap Ende ist), als ChargeCap,
    maximal (Fall, wenn r1.datestamp ungültiges dann 0 sonst dayparts * StandingDayCharge Ende ist), als StandingDayCharge,
    maximal (Fall, wenn r1.datestamp ungültiges dann 0 sonst dayparts * StandingDayCharge Ende ist) 
    + SUMME (isnull (r1.datachange, 0) * (chargerate + Steuer)) 
    + maximale (Fall, wenn r1.datestamp ungültiges dann 0 sonst caprate Ende ist),/@intervals als TotalCost,
    isnull (((Fall, wenn @reportselection = „d-“ dann SUMME (isnull (r1.datachange, 0)) sonst (auserwähltes Oberseite 1 datachange vom #reportdata r2, wo r2.datestamp = r1.datestamp Auftrag durch r2.datachange desc) Ende) *4)/@pf, 0) als MaxkVA,
    isnull (((Fall, wenn @reportselection = „d-“ dann SUMME (isnull (r1.datachange, 0)) sonst (auserwähltes Oberseite 1 datachange vom #reportdata r2, wo r2.datestamp = r1.datestamp Auftrag durch r2.datachange desc) Ende) *4), 0) als MaxkW,
    (auserwählter Zeitstempel der Oberseite 1 vom #reportdata r2 wo r2.datestamp = r1.datestamp Auftrag durch r2.datachange desc, r2.timestamp desc) als MaxDataChangeTimeStamp
 
Von den Zeiträumen
LINKE ÄUSSERE VERBINDEN #ReportData r1 auf r1.timestamp zwischen psdate und pedate
Kreuz wenden dbo.udf_getrates_3 an (r1.Timestamp, @util)    
GRUPPE DURCH PSname, r1.datestamp, PSdate
AUFTRAG DURCH PSdate
ENDE




---------------------------------------------------------------------------





VERWENDEN [EnergySuiteDB]
GEHEN
/****** Gegenstand:  StoredProcedure [dbo]. [GetCostPerPeriod_Virtual] Index-Datum: 07/09/2010 15:32: 51 ******/
ANSI_NULLS AN EINSTELLEN
GEHEN
QUOTED_IDENTIFIER AN EINSTELLEN
GEHEN
VERFAHREN [dbo] ÄNDERN. [GetCostPerPeriod_Virtual] @sDate DATUM/UHRZEIT, @Meter varchar (1000), @calc varchar (1000), @operator varchar (1000), @GasRate int, @pf Hin- und Herbewegung, @util varchar (50), @reportselection Putzfrau (1), @CO2 Hin- und Herbewegung, @Carbon Hin- und Herbewegung

WIE
ANFANGEN

--Ein Energienfaktor von 0 wirft Ausnahme, also muss dieser um kümmert werden
wenn isnull (@pf, 0) gesetztes @pf =0 = 1

-- erklären und einige Variablen zu gründen, die auf ankommenden Parametern basieren

@PREVVAL NUMERISCHES ERKLÄREN (12, 4)
das varchar @grate erklären (12) --numerisch (12.4)
@edate Datum/Uhrzeit erklären
@intervals int erklären

das varchar @str_sdate erklären (20)
das varchar @str_edate erklären (20)

@sdate = Bekehrten (Putzfrau (8), @sdate, 112) einstellen   -- sicherstellen, dass Zeit „beim Anfang“ des Zeitraums ist
Wenn @reportselection = „M“ @sdate = DATEADD einstellte (Monat, DATEDIFF (Monat, 0, @sdate), 0)
Wenn @reportselection = „Y“ einstellte @sdate = datename (Jahr, @sdate) + „0101“

@edate = Bekehrten (Putzfrau (8), @sdate, 112) einstellen + „23:59: 59.997“
Wenn @reportselection = „W“ @edate = Bekehrten einstellte (Putzfrau (8), @sdate+6,112) + „23:59: 59.997“
Wenn @reportselection = „M“ @edate = DATEADD einstellte (Monat, DATEDIFF (Monat, -1, @sdate), 0) - 0.00000005
Wenn @reportselection = „Y“ @edate = datename (Jahr, @sdate) + „1231 23:59 einstellte: 59.997“

das @str_sdate = Bekehrten (varchar, @sdate einstellen - 1.120)
das @str_edate = Bekehrten (varchar, @edate, 120) einstellen

@intervals = Tag (dateadd (Monat, datediff (Monat, - 1, @sdate), 0) einstellen - 1) 
Wenn @reportselection = „D“ @intervals = @intervals * 96 einstellte  -- 96 Viertelstunden an einem Tag.
Wenn @reportselection = „Y“ @intervals = 1 einstellte

wenn isnull (@gasrate, 0) = 1
   @grate einstellen = „11.0786“ -- 1.02264 * 39/3.6
sonst
   @grate einstellen = „1.0“

-- unseren Tempreport-Datenauszug von der Hauptgeschichtentabelle jetzt verursachen

WENN OBJECT_ID („tempdb. #ReportData“, „U ") IST NICHT UNGÜLTIGES TROPFEN-TABELLE #ReportData  -- sollte nicht erforderlich sein
 
TABELLE #ReportData VERURSACHEN
(
    Primärschlüssel Identität der Identifikation-int,
    TLInstance int,
    Zeitstempel DATUM/UHRZEIT,
    Hundertstel INT,      
    Daten NUMERISCH (12, 4),
    DataChange NUMERISCH (12, 4),
    DateStamp Datum/Uhrzeit
)

-- unsere Reportdaten bevölkern

IN #ReportData (Zeitstempel, tlinstance, Hundertstel, Daten, Datestamp) EINSETZEN
exec ('AUSERWÄHLTER Zeitstempel, tlinstance, Hundertstel, Bekehrter (real, Daten) * „+@grate+“, Fall wenn ''' +@reportselection+ ''' = '' y-'' dann Bekehrter (Putzfrau (6), Zeitstempel, 112) + sonst Bekehrter '' 01 '', Ende (der Putzfrau (8), Zeitstempel, 112)
VON HistorianDB.dbo.TLData 
WO TLInstance innen („+@Meter+")
UND Zeitstempel zwischen ''' +@str_sdate+ ''' und ''' +@str_edate+ '''
UND Type=0 
UND isnumeric (Daten) =1
AUFTRAG DURCH tlinstance, Zeitstempel, recordnumber')        

-- das Update tun unsere Daten, um den Unterschied zwischen Messinstrumentmesswerten und Kosten zu berechnen

#reportdata AKTUALISIEREN
DataChange = #reportdata EINSTELLEN. Daten - isnull (prev.data, 0.00)
Vom #ReportData 
linke äußere schließen sich #reportdata prev auf #reportdata.tlinstance = prev.tlinstance und #reportdata.id - 1 = prev.id an 
wo #reportdata.timestamp zwischen @sdate und @edate

-- jetzt haben wir das datachange, das wir @operations und @calc jetzt betrachten können
wenn object_id („tempdb. #tmp_meter“, „U ") ist nicht ungültiges Tropfentabelle #tmp_meter
wenn object_id („tempdb. #tmp_operator“, „U ") ist nicht ungültiges Tropfentabelle #tmp_operator
wenn object_id („tempdb. #tmp_calc“, „U ") ist nicht ungültiges Tropfentabelle #tmp_calc

Identität (int, 1.1) wie Identifikation, Teilkette (@meter, Zahl, charindex („,“, @meter+', ', Zahl) - Zahl) als Messinstrument vorwählen
in #tmp_meter
von (@meter als Messinstrumente vorwählen), m
Kreuz schließen sich (auserwählte Zahl vom Meister. .spt_values wo Art = „p ") n an
wo Teilkette („, „+@meter, Zahl, 1) =“,“
und Zahl <= len (@meter)

Identität (int, 1.1) wie Identifikation, Teilkette (@operator, Zahl, charindex („,“, @operator+', ', Zahl) - Zahl) als Operator vorwählen
in #tmp_operator
von (@operator als Operatoren vorwählen), m
Kreuz schließen sich (auserwählte Zahl vom Meister. .spt_values wo Art = „p ") n an
wo Teilkette („, „+@operator, Zahl, 1) =“,“
und Zahl <= len (@operator)

Identität (int, 1.1) wie Identifikation, Teilkette (@calc, Zahl, charindex („,“, @calc+', ', Zahl) - Zahl) als calc vorwählen
in #tmp_calc
von (@calc als calcs vorwählen), m
Kreuz schließen sich (auserwählte Zahl vom Meister. .spt_values wo Art = „p ") n an
wo Teilkette („, „+@calc, Zahl, 1) =“,“
und Zahl <= len (@calc)

das varchar @parse erklären (4000)
@parse vorwählen = isnull (@parse+' „,“ ") + Operator +“ (Fall, wenn ''' +operator+ ''' innen ('' * '', ''/'') und isnull ([„+ Messinstrument +“], 0) = 0 dann 1 sonst isnull ([„+ Messinstrument +“], 0) end + „*“ + calc + ")“
von #tmp_meter m
inner #tmp_calc c auf sich anschließen m.id = c.id
inner #tmp_operator O auf verbinden m.id = o.id

die varchar @columns erklären (2000)
@columns = isnull (@columns+', „, '') vorwählen +“ [„+ Messinstrument +“] '
von #tmp_meter m
inner #tmp_calc c auf sich anschließen m.id = c.id
inner #tmp_operator O auf verbinden m.id = o.id
Gruppe durch Messinstrument

wenn object_id („tempdb. #tmp_reportdata“, „U ") ist nicht ungültiges Tropfentabelle #tmp_reportdata
Tabelle #tmp_reportdata (Zeitstempeldatum/uhrzeit, datestamp Datum/Uhrzeit, datachange Dezimalstrich (12.4) verursachen)

#tmp_reportdata einsetzen
exec („auserwählter Zeitstempel, datestamp, Bekehrter (Dezimalstrich (12.4), 0 ' +@parse+") als datachange von
(auserwählter Zeitstempel, datestamp, tlinstance, Bekehrter (Dezimalstrich (12.4), datachange) als datachange #reportdata) vom src
GELENK
(Summe (datachange) für tlinstance („+@columns+")) im pvt')

-- jetzt können wir den Report laufen lassen

; Mit Zeiträumen wie
(
   Fall wenn @reportselection = „D“ dann dateadd (Minute, Nr. * 15, @sdate) sonst Fall wenn @reportselection = „Y“ dann dateadd (Monat, Zahl, @sdate) sonst dateadd (Tag, Zahl, @sdate) Endenende als PSDate vorwählen 
   , Fall, wenn @reportselection = „D“ dann dateadd (Minute, Nr. * 15 + 15, @sdate) - 0.00000005 sonst Fall, wenn @reportselection = „Y“ dann DATEADD (Monat, DATEDIFF (Monat, -1, dateadd (Monat, Zahl, @sdate)), 0) - 0.00000005 sonst Bekehrter (Putzfrau (8), @sdate+number, 112) + „23:59: “ Ende des Endes 59.997, wie PEDate 
   , Fall, als @reportselection = „D“ dann (datename (dw, @sdate), 03) + ' „+ Bekehrter verließ (Putzfrau (8), @sdate, 03) +right (Bekehrter (Putzfrau (19), dateadd (Minute, Nr. * 15, @sdate), 100), 8) sonst Fall, als @reportselection = „Y“ dann verließ (datename (Monat, dateadd (Monat, Zahl, @sdate)), 3) +“ „+ verließ datename (Jahr, @sdate) sonst (datename (dw, dateadd (Tag, Zahl, @sdate)), 3) +“ '+ Endenende des Bekehrten (Putzfrau (8), dateadd (Tag, Zahl, @sdate), 03) als PSName 
   , Fall wenn @reportselection = „d-“ sonst Fall dann 1.0/96.0 wenn @reportselection („M“, „W ") dann im sonst Endenende des Tag 1.0 (dateadd (Monat, number+datediff (Monat, -1, @sdate), 0) - 1) als dayparts
   vom Meister. .spt_values n mit (nolock) 
   wo Art = „p“
   und Fall wenn @reportselection = „D“ dann dateadd (Minute, Nr. * 15, @sdate) sonst Fall wenn @reportselection = „Y“ dann dateadd (Monat, Zahl, @sdate) sonst dateadd (Tag, Zahl, @sdate) Endenende < @edate
)
AUSERWÄHLT 
    PSname als Datum,
    SUMME (isnull (r1.datachange, 0)) ALS day_data,
    SUMME (isnull (r1.datachange, 0) *@CO2) ALS CO2_data,
    SUMME (isnull (r1.datachange, 0) *@Carbon) ALS Carbon_data,
    SUMME (isnull (r1.datachange, 0) *chargerate) ALS DataCost,
    SUMME (isnull (r1.datachange, 0) *levy) als TotalLevy,
    maximales (Fall, wenn r1.datestamp ungültiges dann 0 sonst caprate Ende ist),/@intervals als TotalCap,                           
    maximal (Fall, wenn r1.datestamp ungültiges dann 0 sonst chargecap Ende ist), als ChargeCap,
    maximal (Fall, wenn r1.datestamp ungültiges dann 0 sonst dayparts * StandingDayCharge Ende ist), als StandingDayCharge,
    maximal (Fall, wenn r1.datestamp ungültiges dann 0 sonst dayparts * StandingDayCharge Ende ist) 
    + SUMME (isnull (r1.datachange, 0) * (chargerate + Steuer)) 
    + maximale (Fall, wenn r1.datestamp ungültiges dann 0 sonst caprate Ende ist),/@intervals als TotalCost,
    isnull (((Fall, wenn @reportselection = „d-“ dann SUMME (isnull (r1.datachange, 0)) sonst (auserwähltes Oberseite 1 datachange vom #tmp_reportdata r2, wo r2.datestamp = r1.datestamp Auftrag durch r2.datachange desc) Ende) *4)/@pf, 0) als MaxkVA,
    isnull (((Fall, wenn @reportselection = „d-“ dann SUMME (isnull (r1.datachange, 0)) sonst (auserwähltes Oberseite 1 datachange vom #tmp_reportdata r2, wo r2.datestamp = r1.datestamp Auftrag durch r2.datachange desc) Ende) *4), 0) als MaxkW,
    (auserwählter Zeitstempel der Oberseite 1 vom #tmp_reportdata r2 wo r2.datestamp = r1.datestamp Auftrag durch r2.datachange desc, r2.timestamp desc) als MaxDataChangeTimeStamp
 
Von den Zeiträumen
LINKE ÄUSSERE VERBINDEN #tmp_ReportData r1 auf r1.timestamp zwischen psdate und pedate
Kreuz wenden dbo.udf_getrates_3 an (r1.Timestamp, @util)    
GRUPPE DURCH PSname, r1.datestamp, PSdate
AUFTRAG DURCH PSdate
ENDE

Antwort : Sql-SP ändern, um Anfangsanfangswert zu ignorieren

O.K.,

Das ist in:

UPDATE #reportdata
DataChange = #reportdata EINSTELLEN. Daten - isnull (prev.data, @prevval)
Vom #ReportData
linke äußere anschließen #reportdata prev auf #reportdata.id - 1 = prev.id =


Wenn es nicht einen vorhergehenden Wert gibt, dann können wir tun:

UPDATE #reportdata
DataChange = #reportdata EINSTELLEN. Daten - isnull (prev.data, #reportdata. Daten)
Vom #ReportData
linke äußere anschließen #reportdata prev auf #reportdata.id - 1 = prev.id =


Das bedeutet auch, dass wir nicht mehr brauchen:

GESETZTES @PrevVal = isnull ((AUSERWÄHLTER Bekehrter der Oberseite 1 (real, Daten) * @grate
                        VON HistorianDB.dbo.TLData
                        WO TLInstance = @Meter
                        UND Zeitstempel <�>                        UND Type=0
                        UND isnumeric (Daten) =1
                        AUFTRAG DURCH Zeitstempel desc), 0)

Ich denke, der ursprüngliche Einsatz in die reportdata Tabelle ealier Eintragungen einschloß, die eine andere Wahl ist - jede mögliche Ungenauigkeit durch openin ein wenig herabsetzen die Strecke für das Update, dann sicherstellen, dass wir nur über die spezifische Strecke berichten (oder entferne aus Streckenreihen heraus nach dem Update).




Weitere Lösungen  
 
programming4us programming4us