Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- USE [DeepMarketAlgorithm]
- GO
- /****** Object: StoredProcedure [dbo].[SP_Transactions_GetAll] Script Date: 23-Apr-17 19:33:03 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER PROCEDURE [dbo].[SP_Transactions_GetAll] (
- @oCurrentPage INT = NULL,
- @oPageSize INT = NULL,
- @totalPagesCount INT OUTPUT,
- @actualCurrentPage INT OUTPUT,
- @BrokerAccountIds NVARCHAR(MAX) = NULL,
- @BrokerAccountTypeIds NVARCHAR(MAX) = NULL,
- @BrokerIds NVARCHAR(MAX) = NULL,
- @OrderTypeIds NVARCHAR(MAX) = NULL,
- @InstrumentIds NVARCHAR(MAX) = NULL,
- @SellAssetIds NVARCHAR(MAX) = NULL,
- @BuyAssetIds NVARCHAR(MAX) = NULL,
- @TransactionTypeIds NVARCHAR(MAX) = NULL,
- @TransactionDirectionIds NVARCHAR(MAX) = NULL,
- @priceStarting FLOAT = NULL,
- @priceEnding FLOAT = NULL,
- @timeStarting DATETIME = NULL,
- @timeEnding DATETIME = NULL,
- @recordDateStarting DATETIME = NULL,
- @recordDateEnding DATETIME = NULL,
- @editDateStarting DATETIME = NULL,
- @editDateEnding DATETIME = NULL
- )AS
- BEGIN
- SELECT *
- INTO #filteredRows
- FROM Transactions
- WHERE
- T_Status=1 AND
- @BrokerAccountIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_BrokerAccount_ID IN (SELECT *
- FROM Split(',', @BrokerAccountIds)
- )
- ) AND
- @BrokerAccountTypeIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_BrokerAccount_ID IN (SELECT BA_ID
- FROM BrokerAccounts
- WHERE
- BA_BrokerAccountType_ID IN (SELECT *
- FROM Split(',', @BrokerAccountTypeIds)
- )
- )
- ) AND
- @BrokerIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_BrokerAccount_ID IN (SELECT BA_ID
- FROM BrokerAccounts
- WHERE
- BA_BrokerAccountType_ID IN (SELECT BAT_ID
- FROM BrokerAccountTypes
- WHERE
- BAT_Broker_ID IN (SELECT *
- FROM Split(',', @BrokerIds)
- )
- )
- )
- ) AND
- @OrderTypeIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_OrderType_ID IN (SELECT *
- FROM Split(',', @OrderTypeIds)
- )
- ) AND
- @InstrumentIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_Instrument_ID IN (SELECT *
- FROM Split(',', @InstrumentIds)
- )
- ) AND
- @SellAssetIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_Instrument_ID IN (SELECT I_ID
- FROM Instruments
- WHERE
- I_BaseAsset_ID IN (SELECT *
- FROM Split(',', @SellAssetIds)
- )
- )
- ) AND
- @BuyAssetIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_Instrument_ID IN (SELECT I_ID
- FROM Instruments
- WHERE
- I_QuoteAsset_ID IN (SELECT *
- FROM Split(',', @BuyAssetIds)
- )
- )
- ) AND
- @TransactionTypeIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_TransactionType_ID IN (SELECT *
- FROM Split(',', @TransactionTypeIds)
- )
- ) AND
- @TransactionDirectionIds IS NULL OR T_ID IN (SELECT T_ID
- FROM Transactions
- WHERE
- T_TransactionDirection_ID IN (SELECT *
- FROM Split(',', @TransactionDirectionIds)
- )
- ) AND
- @priceStarting IS NULL OR T_Price > @priceStarting AND
- @priceEnding IS NULL OR T_Price < @priceEnding AND
- @timeStarting IS NULL OR T_Time > @timeStarting AND
- @timeEnding IS NULL OR T_Time < @timeEnding AND
- @recordDateStarting IS NULL OR T_RecordDate > @recordDateStarting AND
- @recordDateEnding IS NULL OR T_RecordDate < @recordDateEnding AND
- @editDateStarting IS NULL OR T_EditDate > @editDateStarting AND
- @editDateEnding IS NULL OR T_EditDate < @editDateEnding
- DECLARE @elements INT;
- SET @elements = (SELECT COUNT(*) FROM #filteredRows);
- DECLARE @pageSize INT;
- DECLARE @currentPage INT;
- IF (@oPageSize IS NOT NULL) SET @pageSize = @oPageSize
- ELSE SET @pageSize = @elements
- IF (@oCurrentPage IS NOT NULL) SET @currentPage = @oCurrentPage
- ELSE SET @currentPage = 1
- SET @totalPagesCount =
- CASE
- WHEN (@elements / @pageSize) < 1
- THEN 1
- ELSE (@elements / @pageSize) + IIF(CEILING(@elements % @pageSize) = 0, 0, 1)
- END
- SET @actualCurrentPage =
- CASE
- WHEN (@totalPagesCount < @currentPage)
- THEN 1
- ELSE @currentPage
- END
- SELECT *
- INTO #orderedAndPagedRows
- FROM #filteredRows
- ORDER BY T_ID DESC
- OFFSET (@actualCurrentPage - 1) * @pageSize ROWS
- FETCH NEXT @pageSize ROWS ONLY;
- SELECT *
- FROM #orderedAndPagedRows
- LEFT JOIN BrokerAccounts ON
- (T_BrokerAccount_ID = BA_ID AND BA_Status = 1)
- LEFT JOIN TransactionExecutionMethods ON
- (T_TransactionExecutionMethod_ID = TEM_ID AND TEM_Status = 1)
- LEFT JOIN TransactionCreationTypes ON
- (T_TransactionCreationType_ID = TCTP_ID AND TCTP_Status = 1)
- LEFT JOIN OrderTypes ON
- (T_OrderType_ID = OTP_ID AND OTP_Status = 1)
- LEFT JOIN Instruments ON
- (T_Instrument_ID = I_ID AND I_Status = 1)
- LEFT JOIN TransactionTypes ON
- (T_TransactionType_ID = TTP_ID AND TTP_Status = 1)
- LEFT JOIN TransactionDirections ON
- (T_TransactionDirection_ID = TD_ID AND TD_Status = 1)
- DROP TABLE #filteredRows
- DROP TABLE #orderedAndPagedRows
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement