Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 Problem with Execution Time

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/' + @year
if @quarter = '1st Quarter'
BEGIN
SET @MONTH1 = '1/1/' + @year
SET @MONTH2 = DATEADD(MM,1,@MONTH1)
SET @MONTH3 = DATEADD(MM,1,@MONTH2)
END
if @quarter = '2nd Quarter'
BEGIN
SET @MONTH1 = '4/1/' + @year
SET @MONTH2 = DATEADD(MM,1,@MONTH1)
SET @MONTH3 = DATEADD(MM,1,@MONTH2)
END
if @quarter = '3rd Quarter'
BEGIN
SET @MONTH1 = '7/1/' + @year
SET @MONTH2 = DATEADD(MM,1,@MONTH1)
SET @MONTH3 = DATEADD(MM,1,@MONTH2)
END
if @quarter = '4th Quarter'
BEGIN
SET @MONTH1 = '10/1/' + @year
SET @MONTH2 = DATEADD(MM,1,@MONTH1)
SET @MONTH3 = DATEADD(MM,1,@MONTH2)
END

SET @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)Quarterly

GROUP BY [SSS ID],[LAST NAME],[FIRST NAME],[MIDDLE NAME]




finding the truth
making 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 need


DECLARE @quarter int
DECLARE @year int

SET @quarter = 1
SET @year = 2009

SELECT
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))-1
GROUP BY EI.[EMPLOYEE ID],[LAST NAME],[FIRST NAME],[MIDDLE NAME],[SSS ID]
Go to Top of Page
   

- Advertisement -