You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

214 lines
7.6 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[PROC_HIGH_CHART] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[PROC_HIGH_CHART]
GO
/****** Object: StoredProcedure [dbo].[PROC_HIGH_CHART] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[PROC_HIGH_CHART]
(
@flag VARCHAR(20) ='high-chart'
,@country VARCHAR(30) = NULL
,@User VARCHAR(50)
)
AS
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN
DECLARE @DATE VARCHAR(10),@FirstMonthStart DATE
, @FirstMontEnd DATETIME
, @SecondMonthStart DATE
, @SecondMonthEnd DATETIME
, @ThirdMonthStart DATE
, @ThirdMonthEnd DATETIME
, @FourthdMonthStart DATE
, @FourthMonthEnd DATETIME
, @FifthdMonthStart DATE
, @FifthMonthEnd DATETIME
, @LastMonthStart DATE
, @LastMonthEnd DATETIME
, @todayDate DATETIME
, @previousSixMonthDate Date
IF @flag = 'country'
BEGIN
SELECT @FirstMonthStart = DATEADD(mm,-5,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
SELECT TOP 5 pCountry, count(10) [count]
FROM remittran (NOLOCK)
WHERE approvedDate between @FirstMonthStart and GETDATE()
AND tranStatus <> 'CANCEL'
GROUP BY pcountry
ORDER BY [count] DESC
END
IF @flag = 'high-chart'
BEGIN
IF (SELECT dbo.FNAHasRight(@User,'90100000') )='N'
RETURN
SELECT @todayDate = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))+' 23:59:59'
SELECT @previousSixMonthDate = DATEADD(mm,-5,DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())))
SELECT @FirstMonthStart = DATEADD(mm,-5,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
SELECT @SecondMonthStart = DATEADD(mm,1,@FirstMonthStart)
SELECT @ThirdMonthStart = DATEADD(mm,2,@FirstMonthStart)
SELECT @FourthdMonthStart = DATEADD(mm,3,@FirstMonthStart)
SELECT @FifthdMonthStart = DATEADD(mm,4,@FirstMonthStart)
SELECT @LastMonthStart = DATEADD(mm,5,@FirstMonthStart)
SELECT @LastMonthEnd = DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) +' 23:59:59'
SELECT @FifthMonthEnd = DATEADD(mm,-1,@LastMonthEnd)
SELECT @FourthMonthEnd = DATEADD(mm,-2,@LastMonthEnd)
SELECT @ThirdMonthEnd = DATEADD(mm,-3,@LastMonthEnd)
SELECT @SecondMonthEnd = DATEADD(mm,-4,@LastMonthEnd)
SELECT @FirstMontEnd = DATEADD(mm,-5,@LastMonthEnd)
IF OBJECT_ID('tempdb..#tempRemit') IS NOT NULL DROP TABLE #tempRemit
SELECT approvedDate,pCountry into #tempRemit
FROM remittran(NOLOCK)
where approvedDate between @FirstMonthStart and GETDATE()
AND tranStatus <> 'CANCEL'
IF OBJECT_ID('tempdb..#TEMPCOUNTRY') IS NOT NULL DROP TABLE #TEMPCOUNTRY
SELECT TOP 5 pCountry, count(10) [count] INTO #TEMPCOUNTRY FROM #tempRemit(nolock)
--WHERE approvedDate BETWEEN @FirstMonthStart and GETDATE()
GROUP BY pcountry
ORDER BY [count] DESC
DECLARE @cntCountry INT; SET @cntCountry = 1
WHILE @cntCountry <= 5
BEGIN
SELECT TOP 1 @country = pCountry FROM #TEMPCOUNTRY(nolock)
ORDER BY [count] DESC
DELETE FROM #TEMPCOUNTRY WHERE pCountry = @country
SET @cntCountry = @cntCountry + 1
IF OBJECT_ID('tempdb..#TEMPJAN') IS NOT NULL DROP TABLE #TEMPJAN
IF OBJECT_ID('tempdb..#TEMPFEB') IS NOT NULL DROP TABLE #TEMPFEB
IF OBJECT_ID('tempdb..#TEMPMAR') IS NOT NULL DROP TABLE #TEMPMAR
IF OBJECT_ID('tempdb..#TEMPAPR') IS NOT NULL DROP TABLE #TEMPAPR
IF OBJECT_ID('tempdb..#TEMPMAY') IS NOT NULL DROP TABLE #TEMPMAY
IF OBJECT_ID('tempdb..#TEMPJUNE') IS NOT NULL DROP TABLE #TEMPJUNE
SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPJAN FROM #tempRemit (nolock)
WHERE approvedDate BETWEEN @FirstMonthStart AND @FirstMontEnd
AND pCountry = @country
GROUP BY DAY(approveddate)
ORDER BY [day]
SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPFEB FROM #tempRemit (nolock)
WHERE approvedDate BETWEEN @SecondMonthStart AND @SecondMonthEnd
AND pCountry = @country
GROUP BY DAY(approveddate)
ORDER BY [day]
SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPMAR FROM #tempRemit (nolock)
WHERE approvedDate BETWEEN @ThirdMonthStart AND @ThirdMonthEnd
AND pCountry = @country
GROUP BY DAY(approveddate)
ORDER BY [day]
SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPAPR FROM #tempRemit (nolock)
WHERE approvedDate BETWEEN @FourthdMonthStart AND @FourthMonthEnd
AND pCountry = @country
GROUP BY DAY(approveddate)
ORDER BY [day]
SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPMAY FROM #tempRemit (nolock)
WHERE approvedDate BETWEEN @FifthdMonthStart AND @FifthMonthEnd
AND pCountry = @country
GROUP BY DAY(approveddate)
ORDER BY [day]
SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPJUNE FROM #tempRemit (nolock)
WHERE approvedDate BETWEEN @LastMonthStart AND @todayDate
AND pCountry = @country
GROUP BY DAY(approveddate)
ORDER BY [day]
DECLARE @HIGHCHART TABLE([DAY] INT, FirstMonth INT, SecondMonth INT, ThirdMonth INT, FourthMonth INT, FifthMonth INT, SixthMonth INT)
DECLARE @cnt INT; SET @cnt = 1
WHILE @cnt <=32
BEGIN
INSERT INTO @HIGHCHART
SELECT @CNT, 0,0,0,0,0,0
SET @cnt = @cnt + 1
END
UPDATE T2 SET T2.FirstMonth = T1.cumulative
FROM (SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
FROM #TEMPJAN t1 (nolock)
INNER JOIN #TEMPJAN t2 (nolock) on t1.[day] >= t2.[day]
GROUP BY t1.[day], t1.[count]
) T1
INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
UPDATE T2 SET T2.SecondMonth = T1.cumulative
FROM
(SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
FROM #TEMPFEB t1 (nolock)
INNER JOIN #TEMPFEB t2 (nolock) on t1.[day] >= t2.[day]
GROUP BY t1.[day], t1.[count]) T1
INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
UPDATE T2 SET T2.ThirdMonth = T1.cumulative
FROM
(SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
FROM #TEMPMAR t1 (nolock)
INNER JOIN #TEMPMAR t2 (nolock) on t1.[day] >= t2.[day]
GROUP BY t1.[day], t1.[count]) T1
INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
UPDATE T2 SET T2.FourthMonth = T1.cumulative
FROM
(SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
FROM #TEMPAPR t1 (nolock)
INNER JOIN #TEMPAPR t2 (nolock) on t1.[day] >= t2.[day]
GROUP BY t1.[day], t1.[count]) T1
INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
UPDATE T2 SET T2.FifthMonth = T1.cumulative
FROM
(SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
FROM #TEMPMAY t1 (nolock)
INNER JOIN #TEMPMAY t2 (nolock) on t1.[day] >= t2.[day]
GROUP BY t1.[day], t1.[count]) T1
INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
UPDATE T2 SET T2.SixthMonth = T1.cumulative
FROM
(SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
FROM #TEMPJUNE t1 (nolock)
INNER JOIN #TEMPJUNE t2 (nolock) on t1.[day] >= t2.[day]
GROUP BY t1.[day], t1.[count]) T1
INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
SELECT @country countryName
IF OBJECT_ID('tempdb..#tempdata') IS NOT NULL DROP TABLE #tempdata
SELECT * INTO #tempdata FROM @HIGHCHART
DECLARE @sql VARCHAR(max);
SET @sql = 'SELECT [DAY]'
+',FirstMonth AS ' + DATENAME(MONTH,@FirstMonthStart)
+',SecondMonth AS ' + DATENAME(MONTH,@SecondMonthStart)
+ ',ThirdMonth AS ' + DATENAME(MONTH,@ThirdMonthEnd)
+',FourthMonth AS ' + DATENAME(MONTH,@FourthdMonthStart)
+ ',FifthMonth AS ' + DATENAME(MONTH,@FifthdMonthStart)
+',SixthMonth AS ' + DATENAME(MONTH,@LastMonthStart)
+ ' from #tempdata'
--PRINT (@sql)
EXEC (@sql)
SET @cnt = @cnt + 1
DELETE FROM @HIGHCHART
END
END
END
GO