Repository navigation
Expand file tree
/
Copy pathusp_GenerateHistorcialData.sql
More file actions
67 lines (59 loc) · 2.61 KB
/
Copy pathusp_GenerateHistorcialData.sql
File metadata and controls
67 lines (59 loc) · 2.61 KB
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
IF OBJECT_ID('dbo.usp_GenerateHistorcialData', 'P') IS NOT NULL
DROP PROCEDURE [dbo].[usp_GenerateHistorcialData]
GO
CREATE PROCEDURE [dbo].[usp_GenerateHistorcialData]
AS
BEGIN
SET NOCOUNT ON;
declare @currTimestamp_15min datetime;
declare @currTimestamp_hour datetime;
declare @breakTimestamp1 datetime;
declare @breakTimestamp2 datetime;
declare @breakTimestamp3 datetime;
declare @curyear int;
declare @lastyear int;
select @curyear = datepart(year,GETUTCDATE())
select @lastyear=@curyear-1
select @currTimestamp_15min=dateadd(minute, datediff(minute,0,GETUTCDATE()) / 15 * 15, 0);
select @breakTimestamp1 = dateadd(year,2015-@curyear,@currTimestamp_15min)
select @currTimestamp_hour = dateadd(minute, datediff(minute,0,GETUTCDATE()) / 60 * 60, 0);
select @breakTimestamp2 = dateadd(hour,6,dateadd(year,-1,@currTimestamp_hour))
select @breakTimestamp3 = dateadd(year,2015-@curyear,@currTimestamp_hour)
MERGE DemandReal as target
USING (
select * from (
select concat(datepart(year,@currTimestamp_15min),'-',convert(NVARCHAR(5), utctimestamp, 110), ' ', convert(NVARCHAR(8), cast(utctimestamp as time),108)) as utcTimeStamp,region,load
from DemandSeed
where utcTimestamp <=@breakTimestamp1
union all
select concat(@lastyear,'-',convert(NVARCHAR(5), utctimestamp, 110), ' ', convert(NVARCHAR(8), cast(utctimestamp as time),108)) as utcTimeStamp,region, load
from DemandSeed
where utcTimestamp >= @breakTimestamp1) a
) as source
ON (target.region = source.region and target.utcTimestamp=source.utcTimestamp)
WHEN MATCHED THEN
UPDATE SET load= source.load
WHEN NOT MATCHED THEN
INSERT (utcTimestamp, region, load)
VALUES (source.utcTimestamp, source.region, source.load);
MERGE TemperatureReal as target
USING (
select * from (
SELECT concat(datepart(year,@currTimestamp_hour),'-',convert(NVARCHAR(5), utctimestamp, 110), ' ', convert(NVARCHAR(8), cast(utctimestamp as time),108)) as utcTimeStamp,
region, temperature, flag
from TemperatureSeed
where utcTimestamp <=@breakTimestamp2
union all
select concat(@lastyear,'-',convert(NVARCHAR(5), utctimestamp, 110), ' ', convert(NVARCHAR(8), cast(utctimestamp as time),108)) as utcTimeStamp,
region, temperature,flag
from TemperatureSeed
where utcTimestamp >= @breakTimestamp3) a
) as source
ON (target.region = source.region and target.utcTimestamp=source.utcTimestamp)
WHEN MATCHED THEN
UPDATE SET temperature= source.temperature, flag= source.flag
WHEN NOT MATCHED THEN
INSERT (utcTimestamp, region, temperature, flag)
VALUES (source.utcTimestamp, source.region, source.temperature, source.flag);
END;
Go