Knocks/BackEnd/Knoks.PriceDB/Stored Procedures/Agg_1Minute.sql

120 lines
3.0 KiB
Transact-SQL

CREATE procedure [dbo].[Agg_1Minute]
@StartDate datetime,
@PairSymbol NVARCHAR(50),
@High decimal(18,8),
@Low decimal(18,8),
@Open decimal(18,8),
@Close decimal(18,8),
@ExchangeId int
AS
BEGIN
SET NOCOUNT ON;
--Check if rate data for the date exists
if(exists(SELECT 1 FROM CRT_Data_LiveChart (nolock) WHERE ExchangeId = @ExchangeId AND [CRTD_PairSymbol] = @PairSymbol AND CRTD_CreationDate >= @StartDate))
Begin
RETURN
End
--Compare dates rounded to minutes
if (not exists(SELECT 1 FROM CRT_Data_LiveChart WHERE ExchangeId = @ExchangeId AND [CRTD_PairSymbol] = @PairSymbol
AND dateadd(mi, datediff(mi, 0, CRTD_CreationDate), 0) = dateadd(mi, datediff(mi, 0, @StartDate), 0)))
Begin
INSERT INTO [dbo].[CRT_Data_1Minute]
([CRTD_Period]
,[CRTD_FirstQuote]
,[CRTD_LastQuote]
,[CRTD_PairSymbol]
,[CRTD_BidOpeningValue]
,[CRTD_BidClosingValue]
,[CRTD_BidLowValue]
,[CRTD_BidHighValue]
,[CRTD_MidOpeningValue]
,[CRTD_MidClosingValue]
,[CRTD_MidLowValue]
,[CRTD_MidHighValue]
,[CRTD_DateIn]
,[CRTD_Rows]
,[ExchangeId]
)
SELECT CRTD_CreationDate
,0
,@StartDate
,CRTD_PairSymbol
,[CRTD_BidOpeningValue]
,[CRTD_BidClosingValue]
,[CRTD_BidLowValue]
,[CRTD_BidHighValue]
,0
,0
,0
,0
,GETUTCDATE()
,0
,[ExchangeId]
FROM [CRT_Data_LiveChart] (nolock)
WHERE CRTD_ID = (SELECT TOP 1 lc.CRTD_ID from [CRT_Data_LiveChart] lc (nolock)
WHERE lc.ExchangeId = @ExchangeId AND lc.[CRTD_PairSymbol] = @PairSymbol
AND dateadd(mi, datediff(mi, 0, lc.CRTD_CreationDate), 0) <= dateadd(mi, datediff(mi, 0, @StartDate), 0)
ORDER BY lc.CRTD_CreationDate DESC)
INSERT INTO [dbo].[CRT_Data_LiveChart]
([CRTD_TargetName]
,[CRTD_CreationDate]
,[CRTD_FirstQuote]
,[CRTD_LastQuote]
,[CRTD_PairSymbol]
,[CRTD_BidOpeningValue]
,[CRTD_BidClosingValue]
,[CRTD_BidLowValue]
,[CRTD_BidHighValue]
,[CRTD_MidOpeningValue]
,[CRTD_MidClosingValue]
,[CRTD_MidLowValue]
,[CRTD_MidHighValue]
,[CRTD_DateModified]
,[CRTD_Rows]
,[ExchangeId])
Values
('LiveChart'
,@StartDate
,0
,@StartDate
,@PairSymbol
,@Open
,@Close
,@Low
,@High
,0
,0
,0
,0
,GETUTCDATE()
,0
,@ExchangeId
);
End
Else
Begin
UPDATE [dbo].[CRT_Data_LiveChart] SET
[CRTD_TargetName] = 'LiveChart'
,[CRTD_CreationDate] = @StartDate
,[CRTD_FirstQuote] = 0
,[CRTD_LastQuote] = @StartDate
,[CRTD_PairSymbol] = @PairSymbol
,[CRTD_BidOpeningValue] =@Open
,[CRTD_BidClosingValue]= @Close
,[CRTD_BidLowValue]=@Low
,[CRTD_BidHighValue] = @High
,[CRTD_MidOpeningValue] =0
,[CRTD_MidClosingValue]=0
,[CRTD_MidLowValue]=0
,[CRTD_MidHighValue]=0
,[CRTD_DateModified]=GETUTCDATE()
,[CRTD_Rows] =0,
[ExchangeId] = @ExchangeId
WHERE [CRTD_PairSymbol] = @PairSymbol AND ExchangeId = @ExchangeId
AND dateadd(mi, datediff(mi, 0, CRTD_CreationDate), 0) = dateadd(mi, datediff(mi, 0, @StartDate), 0)
END
END
GO