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:
36:
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]
GA
/****** Heb bezwaar: StoredProcedure [dbo]. [GetCostPerPeriod] de Datum van het Manuscript: het 15:32 van 07/09/2010: 24 ******/
VASTGESTELDE ANSI_NULLS
GA
PLAATS QUOTED_IDENTIFIER
GA
VERANDER PROCEDURE [dbo]. [GetCostPerPeriod] @sDate DATETIME, @Meter varchar (50), @GasRate drijft int., @pf vlotter, varchar @util (50), @reportselectionklusje (1), @co2 vlotter, @Carbon
ZOALS
BEGIN
--Een machtsfactor van 0 zal uitzondering werpen, zodat moet dit worden behandeld
als isnull (@pf, 0) =0 vastgesteld @pf = 1
-- verklaar en opstelling sommige die variabelen op inkomende parameters worden gebaseerd
VERKLAAR @PREVVAL NUMERIEK (12, 4)
verklaar @grate numeriek (12.4)
verklaar @edate datetime
verklaar @intervals int.
plaats @sdate = bekeerling (klusje (8), @sdate, 112) -- zorg ervoor de tijd bij „begin“ van periode is
Als @reportselection = „M“ @sdate = DATEADD plaatste (maand, DATEDIFF (maand, 0, @sdate), 0)
Als @reportselection = „Y“ @sdate = datename (jaar, @sdate) + „0101“ plaatste
de reeks @edate = zet (om klusje (8), @sdate, 112) + „23:59: 59.997“
Als @reportselection = „W“ @edate = zet (om klusje (8) plaatste, @sdate+6,112) + „23:59: 59.997“
Als @reportselection = „M“ @edate = DATEADD plaatste (maand, DATEDIFF (maand, -1, @sdate), 0) - 0.00000005
Als @reportselection = „Y“ @edate = datename (jaar, @sdate) + „1231 23:59 plaatste: 59.997“
vastgestelde @intervals = dag (dateadd (maand, datediff (maand, - 1, @sdate), 0) - 1)
Als @reportselection = „D“ @intervals = @intervals * 96 plaatste -- 96 kwart uren in een dag.
Als @reportselection = „Y“ @intervals = 1 plaatste
als isnull (@gasrate, 0) = 1
reeks @grate = 11.0786 -- 1.02264 * 39/3.6
anders
reeks @grate = 1.0
-- cre�ër nu ons de gegevensuittreksel van het temperaturenrapport van hoofdgeschiedenislijst
ALS OBJECT_ID („tempdb. #ReportData“, „U“) IS GEEN ONGELDIGE #ReportData VAN DE LIJST VAN DE DALING -- niet zou moeten worden vereist
CRE�ëR #ReportData VAN DE LIJST
(
De identiteits primaire sleutel van identiteitskaart int.,
TimeStamp DATETIME,
Honderdste int.,
NUMERIEKE gegevens (12, 4),
NUMERIEKE DataChange (12, 4),
Datetime van DateStamp
)
-- bevolk onze rapportgegevens
TUSSENVOEGSEL IN #ReportData (Timestamp, Honderdste, Gegevens, Datestamp)
SELECTEER Timestamp, Honderdste, zet (echt, Gegevens) * @grate, geval wanneer om @reportselection = „Y“ dan (klusje (6), timestamp, 112) + ' anders 01 ' omzet omzet (klusje (8), timestamp, 112) eind
VAN HistorianDB.dbo.TLData
WAAR TLInstance = @Meter
EN timestamp tussen @sdate en @edate
EN Type=0
EN isnumeric (gegevens) =1
ORDE DOOR timestamp, recordnumber
-- tref nu voorbereidingen om onze gegevens bij te werken om het verschil tussen meterlezingen te berekenen, maar wij hebben een uitgangspunt nodig…
VASTGESTELDE @PrevVal = isnull ((UITGEZOCHTE bovenkant 1 zet (echt, Gegevens) * @grate om
VAN HistorianDB.dbo.TLData
WAAR TLInstance = @Meter
EN timestamp < @sdate
EN Type=0
EN isnumeric (gegevens) =1
ORDE DOOR timestamp desc), 0)
-- doe de update onze gegevens het verschil tussen meterlezingen en kosten berekenen
WERK #reportdata bij
PLAATS DataChange = #reportdata. Gegevens - isnull (@prevval prev.data,)
VAN #ReportData
linker buiten sluit zich aan bij #reportdata prev op #reportdata.id - 1 = prev.id
-- nu kunnen wij het rapport in werking stellen
; Met Periodes zoals
(
Selecteer geval wanneer @reportselection = het anders geval van „D“ toen dateadd (minuut, aantal * 15, @sdate) wanneer @reportselection = „Y“ dateadd (maand, aantal, @sdate) dateadd (dag, aantal, @sdate) dan anders eind als PSDate beëindigt
, geval wanneer @reportselection = „D“ toen dateadd (minuut, aantal * 15 + 15, @sdate) - 0.00000005 anders geval wanneer @reportselection = „Y“ toen DATEADD (maand, DATEDIFF (maand, -1, dateadd (maand, aantal, @sdate)), 0) - anders 0.00000005 zetten (om klusje (8), @sdate+number, 112) + „23:59: 59.997“ eindeind zoals PEDate
, geval toen @reportselection = „D“ toen (datename (dw, @sdate), 03) + ' „+ bekeerling wegging (klusje (8), @sdate, 03) +right (bekeerling (klusje (19), dateadd (minuut, aantal * 15, @sdate), 100),) anders geval 8 toen @reportselection = „Y“ toen wegging (datename (maand, dateadd (maand, aantal, @sdate)), gingen 3) +“ „+ datename (jaar, @sdate) anders weg (datename (dw, dateadd (dag, aantal, @sdate)), 3) +“ 'het eind + van het bekeerlings (klusje (8), dateadd (dag, aantal, @sdate), 03) eind als PSName
, geval wanneer @reportselection = anders geval toen 1.0/96.0 van „D“ wanneer @reportselection in („M“, „W“) anders dag toen 1.0 (dateadd (maand, number+datediff (maand, -1, @sdate), 0) - 1) eindeind als dayparts
van hoofd. .spt_values n met (nolock)
waar type = „p“
en geval wanneer @reportselection = het anders geval van „D“ toen dateadd (minuut, aantal * 15, @sdate) wanneer @reportselection = „Y“ dateadd (maand, aantal, @sdate) dateadd (dag, aantal, @sdate) dan anders eind < @edate beëindigt
)
SELECTEER
PSname als Datum,
SOM (isnull (r1.datachange, 0)) ALS day_data,
SOM (isnull (r1.datachange, 0))*@CO2 ALS CO2_data,
SOM (isnull (r1.datachange, 0))*@Carbon ALS Carbon_data,
SOM (isnull (r1.datachange, 0) *chargerate) ALS DataCost,
SOM (isnull (r1.datachange, 0) *levy) als TotalLevy,
maximum (geval wanneer r1.datestamp ongeldig toen anders caprate eind 0) is/@intervals als TotalCap,
maximum (geval wanneer r1.datestamp ongeldig toen anders chargecap eind 0) is als ChargeCap,
maximum (geval wanneer r1.datestamp ongeldig toen eind 0 anders dayparts * StandingDayCharge) is als StandingDayCharge,
maximum (geval wanneer r1.datestamp ongeldig toen eind 0 anders dayparts * StandingDayCharge is)
+ SOM (isnull (r1.datachange, 0) * (chargerate + heffing))
+ maximum (geval wanneer r1.datestamp ongeldig toen anders caprate eind 0) is/@intervals als TotalCost,
isnull (((geval wanneer @reportselection = de SOM van „D“ toen (isnull (r1.datachange, 0)) anders (uitgezochte hoogste 1 datachange van #reportdata r2 waar r2.datestamp = orde r1.datestamp door r2.datachange desc) eind) *4)/@pf, 0) als MaxkVA,
isnull (((geval wanneer @reportselection = de SOM van „D“ toen (isnull (r1.datachange, 0)) anders (uitgezochte hoogste 1 datachange van #reportdata r2 waar r2.datestamp = orde r1.datestamp door r2.datachange desc) eind) *4), 0) als MaxkW,
(uitgezochte hoogste 1 timestamp van #reportdata r2 waar r2.datestamp = orde r1.datestamp door r2.datachange desc, r2.timestamp desc) als MaxDataChangeTimeStamp
VAN Periodes
LINKER BUITEN SLUIT zich aan bij #ReportData r1 op r1.timestamp tussen psdate en pedate
het kruis past dbo.udf_getrates_3 (r1.Timestamp, @util) toe
GROEP DOOR PSname, r1.datestamp, PSdate
ORDE DOOR PSdate
EIND
GEBRUIK [EnergySuiteDB]
GA
/****** Heb bezwaar: StoredProcedure [dbo]. [GetCostPerPeriod_Virtual] de Datum van het Manuscript: het 15:32 van 07/09/2010: 51 ******/
VASTGESTELDE ANSI_NULLS
GA
PLAATS QUOTED_IDENTIFIER
GA
VERANDER PROCEDURE [dbo]. [GetCostPerPeriod_Virtual] @sDate DATETIME, @Meter varchar (1000), varchar drijft @calc (1000), varchar @operator (1000), @GasRate int., @pf vlotter, varchar @util (50), @reportselectionklusje (1), @CO2 vlotter, @Carbon
ZOALS
BEGIN
--Een machtsfactor van 0 zal uitzondering werpen, zodat moet dit worden behandeld
als isnull (@pf, 0) =0 vastgesteld @pf = 1
-- verklaar en opstelling sommige die variabelen op inkomende parameters worden gebaseerd
VERKLAAR @PREVVAL NUMERIEK (12, 4)
verklaar @grate varchar (12) --numeriek (12.4)
verklaar @edate datetime
verklaar @intervals int.
verklaar @str_sdate varchar (20)
verklaar @str_edate varchar (20)
plaats @sdate = bekeerling (klusje (8), @sdate, 112) -- zorg ervoor de tijd bij „begin“ van periode is
Als @reportselection = „M“ @sdate = DATEADD plaatste (maand, DATEDIFF (maand, 0, @sdate), 0)
Als @reportselection = „Y“ @sdate = datename (jaar, @sdate) + „0101“ plaatste
de reeks @edate = zet (om klusje (8), @sdate, 112) + „23:59: 59.997“
Als @reportselection = „W“ @edate = zet (om klusje (8) plaatste, @sdate+6,112) + „23:59: 59.997“
Als @reportselection = „M“ @edate = DATEADD plaatste (maand, DATEDIFF (maand, -1, @sdate), 0) - 0.00000005
Als @reportselection = „Y“ @edate = datename (jaar, @sdate) + „1231 23:59 plaatste: 59.997“
reeks @str_sdate = varchar bekeerling (, @sdate - 1.120)
reeks @str_edate = varchar bekeerling (, @edate, 120)
vastgestelde @intervals = dag (dateadd (maand, datediff (maand, - 1, @sdate), 0) - 1)
Als @reportselection = „D“ @intervals = @intervals * 96 plaatste -- 96 kwart uren in een dag.
Als @reportselection = „Y“ @intervals = 1 plaatste
als isnull (@gasrate, 0) = 1
reeks @grate = „11.0786“ -- 1.02264 * 39/3.6
anders
reeks @grate = „1.0“
-- cre�ër nu ons de gegevensuittreksel van het temperaturenrapport van hoofdgeschiedenislijst
ALS OBJECT_ID („tempdb. #ReportData“, „U“) IS GEEN ONGELDIGE #ReportData VAN DE LIJST VAN DE DALING -- niet zou moeten worden vereist
CRE�ëR #ReportData VAN DE LIJST
(
De identiteits primaire sleutel van identiteitskaart int.,
TLInstance int.,
TimeStamp DATETIME,
Honderdste int.,
NUMERIEKE gegevens (12, 4),
NUMERIEKE DataChange (12, 4),
Datetime van DateStamp
)
-- bevolk onze rapportgegevens
TUSSENVOEGSEL IN #ReportData (Timestamp, tlinstance, Honderdste, Gegevens, Datestamp)
exec ('UITGEZOCHTE Timestamp, tlinstance, Honderdste, zet (echt, Gegevens) * „+@grate+“, geval wanneer ''' +@reportselection+ ''' = '' Y '' dan omzet (klusje (6), timestamp, 112) om + zet '' 01 anders '' (klusje (8), timestamp, 112) eind om
VAN HistorianDB.dbo.TLData
WAAR TLInstance binnen („+@Meter+“)
EN timestamp tussen ''' +@str_sdate+ ''' en ''' +@str_edate+ '''
EN Type=0
EN isnumeric (gegevens) =1
ORDE DOOR tlinstance, timestamp, recordnumber')
-- doe de update onze gegevens het verschil tussen meterlezingen en kosten berekenen
WERK #reportdata bij
PLAATS DataChange = #reportdata. Gegevens - isnull (prev.data, 0.00)
VAN #ReportData
linker buiten sluit zich aan bij #reportdata prev op #reportdata.tlinstance = prev.tlinstance en #reportdata.id - 1 = prev.id
waar #reportdata.timestamp tussen @sdate en @edate
-- nu hebben wij datachange wij @operations en @calc kunnen nu overwegen
als object_id („tempdb. #tmp_meter“, „U“) is geen ongeldige #tmp_meter van de dalingslijst
als object_id („tempdb. #tmp_operator“, „U“) is geen ongeldige #tmp_operator van de dalingslijst
als object_id („tempdb. #tmp_calc“, „U“) is geen ongeldige dalingslijst #tmp_calc
selecteer identiteit (int., 1.1) als identiteitskaart, die (@meter, aantal, charindex („,“ substring, @meter+', ', aantal) - aantal) als meter
in #tmp_meter
van (selecteer @meter als meters) m
het kruis sluit zich aan (uitgezocht aantal van hoofd. .spt_values waar type = „p“) bij n
waar het substring („, „+@meter, aantal, 1) =“,“
en aantal <= len (@meter)
selecteer identiteit (int., 1.1) als identiteitskaart, die (@operator, aantal, charindex („,“ substring, @operator+', ', aantal) - aantal) als exploitant
in #tmp_operator
van (uitgezochte @operator als exploitanten) m
het kruis sluit zich aan (uitgezocht aantal van hoofd. .spt_values waar type = „p“) bij n
waar het substring („, „+@operator, aantal, 1) =“,“
en aantal <= len (@operator)
selecteer identiteit (int., 1.1) als identiteitskaart, die (@calc, aantal, charindex („,“ substring, @calc+', ', aantal) - aantal) als calc
in #tmp_calc
van (uitgezochte @calc als calcs) m
het kruis sluit zich aan (uitgezocht aantal van hoofd. .spt_values waar type = „p“) bij n
waar het substring („, „+@calc, aantal, 1) =“,“
en aantal <= len (@calc)
verklaar @parse varchar (4000)
selecteer @parse = isnull (@parse+' „,“ „) + exploitant +“ (geval wanneer ''' +operator+ ''' binnen ('' * '', ''/'') en isnull ([„+ meter +“], 0) = 0 toen anders 1 isnull ([„+ meter +“], 0) end + „*“ + calc + „)“
van #tmp_meter m
binnen sluit me aan #tmp_calc bij c op m.id = c.id
binnen sluit me aan bij #tmp_operator o op m.id = o.id
verklaar @columns varchar (2000)
selecteer @columns = isnull (@columns+', „, '') +“ [„+ meter +“] '
van #tmp_meter m
binnen sluit me aan #tmp_calc bij c op m.id = c.id
binnen sluit me aan bij #tmp_operator o op m.id = o.id
groep door meter
als object_id („tempdb. #tmp_reportdata“, „U“) is geen ongeldige #tmp_reportdata van de dalingslijst
cre�ër lijst#tmp_reportdata (timestamp datetime, datestamp datetime, datachange decimaal (12.4))
neem #tmp_reportdata op
exec („uitgezochte timestamp, datestamp zet om (decimaal (12.4), 0 ' +@parse+“) als datachange van
(uitgezochte timestamp, datestamp, tlinstance zet om (decimaal (12.4), datachange) als datachange van #reportdata) src
SPIL
(som (datachange) voor tlinstance binnen („+@columns+“)) pvt')
-- nu kunnen wij het rapport in werking stellen
; Met Periodes zoals
(
Selecteer geval wanneer @reportselection = het anders geval van „D“ toen dateadd (minuut, aantal * 15, @sdate) wanneer @reportselection = „Y“ dateadd (maand, aantal, @sdate) dateadd (dag, aantal, @sdate) dan anders eind als PSDate beëindigt
, geval wanneer @reportselection = „D“ toen dateadd (minuut, aantal * 15 + 15, @sdate) - 0.00000005 anders geval wanneer @reportselection = „Y“ toen DATEADD (maand, DATEDIFF (maand, -1, dateadd (maand, aantal, @sdate)), 0) - anders 0.00000005 zetten (om klusje (8), @sdate+number, 112) + „23:59: 59.997“ eindeind zoals PEDate
, geval toen @reportselection = „D“ toen (datename (dw, @sdate), 03) + ' „+ bekeerling wegging (klusje (8), @sdate, 03) +right (bekeerling (klusje (19), dateadd (minuut, aantal * 15, @sdate), 100),) anders geval 8 toen @reportselection = „Y“ toen wegging (datename (maand, dateadd (maand, aantal, @sdate)), gingen 3) +“ „+ datename (jaar, @sdate) anders weg (datename (dw, dateadd (dag, aantal, @sdate)), 3) +“ 'het eind + van het bekeerlings (klusje (8), dateadd (dag, aantal, @sdate), 03) eind als PSName
, geval wanneer @reportselection = anders geval toen 1.0/96.0 van „D“ wanneer @reportselection in („M“, „W“) anders dag toen 1.0 (dateadd (maand, number+datediff (maand, -1, @sdate), 0) - 1) eindeind als dayparts
van hoofd. .spt_values n met (nolock)
waar type = „p“
en geval wanneer @reportselection = het anders geval van „D“ toen dateadd (minuut, aantal * 15, @sdate) wanneer @reportselection = „Y“ dateadd (maand, aantal, @sdate) dateadd (dag, aantal, @sdate) dan anders eind < @edate beëindigt
)
SELECTEER
PSname als Datum,
SOM (isnull (r1.datachange, 0)) ALS day_data,
SOM (isnull (r1.datachange, 0) *@CO2) ALS CO2_data,
SOM (isnull (r1.datachange, 0) *@Carbon) ALS Carbon_data,
SOM (isnull (r1.datachange, 0) *chargerate) ALS DataCost,
SOM (isnull (r1.datachange, 0) *levy) als TotalLevy,
maximum (geval wanneer r1.datestamp ongeldig toen anders caprate eind 0) is/@intervals als TotalCap,
maximum (geval wanneer r1.datestamp ongeldig toen anders chargecap eind 0) is als ChargeCap,
maximum (geval wanneer r1.datestamp ongeldig toen eind 0 anders dayparts * StandingDayCharge) is als StandingDayCharge,
maximum (geval wanneer r1.datestamp ongeldig toen eind 0 anders dayparts * StandingDayCharge is)
+ SOM (isnull (r1.datachange, 0) * (chargerate + heffing))
+ maximum (geval wanneer r1.datestamp ongeldig toen anders caprate eind 0) is/@intervals als TotalCost,
isnull (((geval wanneer @reportselection = de SOM van „D“ toen (isnull (r1.datachange, 0)) anders (uitgezochte hoogste 1 datachange van #tmp_reportdata r2 waar r2.datestamp = orde r1.datestamp door r2.datachange desc) eind) *4)/@pf, 0) als MaxkVA,
isnull (((geval wanneer @reportselection = de SOM van „D“ toen (isnull (r1.datachange, 0)) anders (uitgezochte hoogste 1 datachange van #tmp_reportdata r2 waar r2.datestamp = orde r1.datestamp door r2.datachange desc) eind) *4), 0) als MaxkW,
(uitgezochte hoogste 1 timestamp van #tmp_reportdata r2 waar r2.datestamp = orde r1.datestamp door r2.datachange desc, r2.timestamp desc) als MaxDataChangeTimeStamp
VAN Periodes
LINKER BUITEN SLUIT zich aan bij #tmp_ReportData r1 op r1.timestamp tussen psdate en pedate
het kruis past dbo.udf_getrates_3 (r1.Timestamp, @util) toe
GROEP DOOR PSname, r1.datestamp, PSdate
ORDE DOOR PSdate
EIND
|