| Author |
Topic |
|
wormz666
Posting Yak Master
110 Posts |
Posted - 2009-05-06 : 10:13:43
|
i want to reduce the execution time;could there be another way reduce execution time??here is my query; my query took a minute to display... DECLARE @quarter VARCHAR(20) DECLARE @year VARCHAR(10) SET @quarter = '1st Quarter' SET @year = '2009' DECLARE @MONTH1 DATETIME DECLARE @MONTH2 DATETIME DECLARE @MONTH3 DATETIME DECLARE @filter DATETIME SET @MONTH1 = '1/1/' + @yearif @quarter = '1st Quarter' BEGIN SET @MONTH1 = '1/1/' + @year SET @MONTH2 = DATEADD(MM,1,@MONTH1) SET @MONTH3 = DATEADD(MM,1,@MONTH2) ENDif @quarter = '2nd Quarter' BEGIN SET @MONTH1 = '4/1/' + @year SET @MONTH2 = DATEADD(MM,1,@MONTH1) SET @MONTH3 = DATEADD(MM,1,@MONTH2) ENDif @quarter = '3rd Quarter' BEGIN SET @MONTH1 = '7/1/' + @year SET @MONTH2 = DATEADD(MM,1,@MONTH1) SET @MONTH3 = DATEADD(MM,1,@MONTH2) ENDif @quarter = '4th Quarter' BEGIN SET @MONTH1 = '10/1/' + @year SET @MONTH2 = DATEADD(MM,1,@MONTH1) SET @MONTH3 = DATEADD(MM,1,@MONTH2) ENDSET @filter = DATEDIFF(DD,1,DATEADD(MM,1,@MONTH3))SELECT [SSS ID],[LAST NAME],[FIRST NAME],[MIDDLE NAME], SUM([1st Month]) AS [1st month],SUM([2nd Month]) AS [2nd month], SUM([3rd Month]) AS [3rd month],SUM([1st Month com]) AS [1st Month com], SUM([2nd Month com]) AS [2nd Month com],SUM([3rd Month com]) AS [3rd Month com] FROM (SELECT [SSS ID],[LAST NAME],[FIRST NAME],[MIDDLE NAME], CASE WHEN DATEPART(MM,[DATES])=DATEPART(MM,@MONTH1) THEN [SSS YEE] ELSE 0 END AS [1st Month], CASE WHEN DATEPART(MM,[DATES])=DATEPART(MM,@MONTH2) THEN [SSS YEE] ELSE 0 END AS [2nd Month], CASE WHEN DATEPART(MM,[DATES])=DATEPART(MM,@MONTH3) THEN [SSS YEE] ELSE 0 END AS [3rd Month], CASE WHEN DATEPART(MM,[DATES])=DATEPART(MM,@MONTH1) THEN [SSS YER] ELSE 0 END AS [1st Month com], CASE WHEN DATEPART(MM,[DATES])=DATEPART(MM,@MONTH2) THEN [SSS YER] ELSE 0 END AS [2nd Month com], CASE WHEN DATEPART(MM,[DATES])=DATEPART(MM,@MONTH3) THEN [SSS YER] ELSE 0 END AS [3rd Month com], [DATES] FROM (SELECT EI.[EMPLOYEE ID],[LAST NAME],[FIRST NAME],[MIDDLE NAME], CASE WHEN [SSS ID] IS NULL THEN NULL ELSE [SSS ID] END [SSS ID], CASE WHEN [SSS_YEE] IS NULL THEN 0 ELSE [SSS_YEE] END [SSS YEE], CASE WHEN [SSS_YER] IS NULL THEN 0 ELSE [SSS_YER] END [SSS YER], benefit_date AS [DATES] FROM [Employee Information] EI INNER JOIN [Benefits] BT ON EI.[EMPLOYEE ID]=BT.EMPID)PARTIALS WHERE [DATES] BETWEEN @MONTH1 AND @filter)QuarterlyGROUP BY [SSS ID],[LAST NAME],[FIRST NAME],[MIDDLE NAME] finding the truthmaking a maze on my mind.... |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2009-05-07 : 13:34:00
|
seems like this is what you needDECLARE @quarter int DECLARE @year int SET @quarter = 1 SET @year = 2009SELECT EI.[EMPLOYEE ID],[LAST NAME],[FIRST NAME],[MIDDLE NAME],[SSS ID], SUM(CASE WHEN DATEPART(MM,[benefit_date])%3 = 1 THEN [SSS YEE] ELSE 0 END) AS [1st Month],SUM(CASE WHEN DATEPART(MM,[benefit_date])%3 = 2 THEN [SSS YEE] ELSE 0 END) AS [2nd Month],SUM(CASE WHEN DATEPART(MM,[benefit_date])%3 = 0 THEN [SSS YEE] ELSE 0 END) AS [3rd Month],SUM(CASE WHEN DATEPART(MM,[benefit_date])%3 = 1 THEN [SSS_YER] ELSE 0 END) AS [1st Month Com],SUM(CASE WHEN DATEPART(MM,[benefit_date])%3 = 2 THEN [SSS_YER] ELSE 0 END) AS [2nd Month Com],SUM(CASE WHEN DATEPART(MM,[benefit_date])%3 = 0 THEN [SSS_YER] ELSE 0 END) AS [3rd Month Com] FROM [Employee Information] EI INNER JOIN [Benefits] BT ON EI.[EMPLOYEE ID]=BT.EMPID)PARTIALS WHERE benefit_date BETWEEN DATEADD(qq,@quarter-1,DATEADD(yy,@year-1900,0)) AND DATEADD(qq,@quarter,DATEADD(yy,@year-1900,0))-1GROUP BY EI.[EMPLOYEE ID],[LAST NAME],[FIRST NAME],[MIDDLE NAME],[SSS ID] |
 |
|
|
|
|
|