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:
|
USE [EnergySuiteDB]
GEHEN
/****** Gegenstand: StoredProcedure [dbo]. [GetCostPerPeriod] Index-Datum: 08/14/2010 19:40: 14 ******/
ANSI_NULLS AN EINSTELLEN
GEHEN
QUOTED_IDENTIFIER AN EINSTELLEN
GEHEN
VERFAHREN [dbo] ÄNDERN. [GetCostPerPeriod] @sDate DATUM/UHRZEIT, @Meter int, @GasRate int, @pf Hin- und Herbewegung, @util varchar (50), @reportselection Putzfrau (1), @co2 Hin- und Herbewegung, @Carbon Hin- und Herbewegung, @calc Hin- und Herbewegung, @occtl int, @oattl int, @Spacetl int
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,
Inanspruchnahme int,
HAFER numerisch (12.4),
SpaceTemp numerisch (12.4)
)
-- unsere Reportdaten bevölkern
IN #ReportData (Zeitstempel, Hundertstel, Daten, Datestamp, Inanspruchnahme, HAFER, SpaceTemp) EINSETZEN
Zeitstempel, Hundertstel, der Bekehrte (real, Daten) * @grate*@calc, Fall VORWÄHLEN wenn @reportselection = „y-“ dann Bekehrter (Putzfrau (6), Zeitstempel, 112) + sonst Bekehrter ' 01 ', Ende (der Putzfrau (8), Zeitstempel, 112)
, Fall, wenn @occtl = 0 dann 2 sonst (AUSERWÄHLTER Bekehrter der Oberseite 1 (int, Daten)
VON HistorianDB.dbo.TLData O
WO O.TLInstance = @Occtl
UND O.timestamp <= M.timestamp
UND O.Type=0
UND isnumeric (O.data) = 1
AUFTRAG DURCH O.timestamp desc) Ende
, (AUSERWÄHLTER Bekehrter der Oberseite 1 (real, Daten)
VON HistorianDB.dbo.TLData O
WO O.TLInstance = @OatTl
UND O.timestamp zwischen @sdate und M.timestamp
UND O.Type=0
UND isnumeric (O.data) = 1
AUFTRAG DURCH O.timestamp desc)
, (AUSERWÄHLTER Bekehrter der Oberseite 1 (real, Daten)
VON HistorianDB.dbo.TLData O
WO O.TLInstance = @SpaceTl
UND O.timestamp zwischen @sdate und M.timestamp
UND O.Type=0
UND isnumeric (O.data) = 1
AUFTRAG DURCH O.timestamp desc)
VON HistorianDB.dbo.TLData M
WO TLInstance = @Meter
UND Zeitstempel zwischen @sdate und @edate
UND Type=0
UND isnumeric (Daten) =1
AUFTRAG DURCH Zeitstempel
-- das Update tun unsere Daten, um den Unterschied zwischen Messinstrumentmesswerten und Kosten zu berechnen
#reportdata AKTUALISIEREN
DataChange = #reportdata EINSTELLEN. Daten - isnull (prev.data, #reportdata. Daten)
Vom #ReportData
linke äußere anschließen #reportdata prev auf #reportdata.id - 1 = prev.id =
-- auf Gebühren der negativen Zahlen jetzt überprüfen, um Zurückstellen (oder die verfälschung) zu messen
#reportdata GESETZTES DataChange AKTUALISIEREN = 0 WO DataChange < 0
-- 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,
Summe (Fall, wenn isnull (Inanspruchnahme, 2) = 0 dann isnull (r1.datachange, 0) sonst 0 Ende) als OffHoursTotal,
Summe (Fall, wenn isnull (Inanspruchnahme, 2) = 1 dann isnull (r1.datachange, 0) sonst 0 Ende) als OnHoursTotal,
avg (isnull (r1.Spacetemp, 000.0)) als AvgSpaceTemp,
Fall, wenn @reportselection = „D“ oder Minute (isnull (r1.Spacetemp, 999.9)) = 999.9 dann 0.0 sonst Minute (isnull (r1.Spacetemp, 999.9)) Ende als MinSpaceTemp,
Fall, wenn @reportselection = „D“ dann 0.0 sonst maximales (isnull (r1.Spacetemp, 000.0)) Ende als MaxSpaceTemp,
avg (isnull (r1.oat, 000.0)) als AvgOat,
Fall, wenn @reportselection = „D“ oder Minute (isnull (r1.Oat, 999.9)) = 999.9 dann 0.0 sonst Minute (isnull (r1.Oat, 999.9)) Ende als MinOat,
Fall, wenn @reportselection = „D“ dann 0.0 sonst maximales (isnull (r1.oat, 000.0)) Ende als MaxOat
Von den Zeiträumen
LINKE ÄUSSERE VERBINDEN #ReportData r1 auf r1.timestamp zwischen psdate und pedate
Kreuz anwenden dbo.udf_getrates_3 z (r1.Timestamp, @util)
GRUPPE DURCH PSname, r1.datestamp, PSdate
AUFTRAG DURCH PSdate
ENDE
|