IF OBJECT_ID('tempdb..#OvertimeBudget2013') IS NOT NULL
DROP TABLE #OvertimeBudget2013
CREATE TABLE #OvertimeBudget2013
(
[ID] INT IDENTITY(1,1) NOT NULL
,[Org Level] [nvarchar](50) NULL
,[Overtime Code] [nchar](10) NULL
,[JanuaryBudget] [money] NULL
,[FebruaryBudget] [money] NULL
,[MarchBudget] [money] NULL
,[AprilBudget] [money] NULL
,[MayBudget] [money] NULL
,[JuneBudget] [money] NULL
,[JulyBudget] [money] NULL
,[AugustBudget] [money] NULL
,[SeptemberBudget] [money] NULL
,[OctoberBudget] [money] NULL
,[NovemeberBudget] [money] NULL
,[DecemberBudget] [money] NULL
,[ActualBudget] [money] NULL
,PRIMARY KEY CLUSTERED (ID)
)
INSERT Into #OvertimeBudget2013
([Org Level],[Overtime Code],[JanuaryBudget],[FebruaryBudget],[MarchBudget])
SELECT 'WSIDOE','5204','1579588.23','1578296.23','1964371.53' UNION ALL
SELECT 'WSIOTH','5204','10979.65','11212.00','15404.53' UNION ALL
SELECT 'WSIWMA','5204','121070.56','121070.05','149569.32' UNION ALL
SELECT 'WSIUNY','5204','1287.29','1287.68','1609.60' UNION ALL
SELECT 'WSIZHR','5204','553.85','553.85','692.31' UNION ALL
SELECT 'WSIZSS','5204','96.15','96.15','120.19'
SELECT * FROM #OvertimeBudget2013
IF OBJECT_ID('tempdb..#EmpPers') IS NOT NULL
DROP TABLE #EmpPers
CREATE TABLE #EmpPers (
[ID] INT IDENTITY(1,1) NOT NULL
,[pehPErcontrol] DATETIME NOT NULL
,[eepNameLast] [nvarchar](50) NULL
,[CodDesc] [nvarchar](50) NULL
,[eepNameFirst] [nvarchar](50) NULL
,[eepNameMiddle] [nvarchar](50) NULL
,[eepNameSuffix] [nvarchar](50) NULL
,[Org Level] [nvarchar](50) NULL
,[Overtime Code] [nchar](10) NULL
,[JanuaryActual] [money] NULL
,[FebruaryActual] [money] NULL
,[MarchActual] [money] NULL
,PRIMARY KEY (ID))
;WITH cteEmpData
([pehPErcontrol],[eepNameLast],[CodDesc],[eepNameFirst],[eepNameMiddle],[eepNameSuffix],[Org Level],[Overtime Code],[JanuaryActual],[FebruaryActual],[MarchActual])
AS
(
SELECT GETDATE(),'Bush','1','George','W','Jr.','5204','WSIDOE','157588.23','158296.23','196471.53' UNION ALL
SELECT GETDATE(),'Jones','2','George','T','Sr.','5204','WSIUNY','15758.23','18296.23','19641.53' UNION ALL
SELECT GETDATE(),'Smith','3','April','Mae','','5204','WSIZSS','1578.23','1582.23','19641.53'
)
INSERT INTO #EmpPers
([pehPErcontrol],[eepNameLast],[CodDesc],[eepNameFirst],[eepNameMiddle],[eepNameSuffix],[Org Level],[Overtime Code],[JanuaryActual],[FebruaryActual],[MarchActual])
SELECT
CAST(LEFT(pehPErcontrol,8) AS DATETIME) AS [Period Control Date]
,RTRIM(eepNameLast) + --isnull(' '+rtrim(CodDesc), '') +
', ' + RTRIM(eepNameFirst) + ' ' + COALESCE(SUBSTRING(eepNameMiddle,1,1) + '.','') AS Name
,eepNameLast AS [Last Name]
,ISNULL(eepNameSuffix,'') AS [Suffix]
,eepNameFirst AS [First Name]
,ISNULL(eepNameMiddle,'') AS [Middle Name]
--new
,[overtime code] AS [Overtime Code]
,[Org Level] AS [Org Level]
,[JanuaryActual]
,[FebruaryActual]
,[MarchActual]
FROM
cteEmpData
SELECT * FROM #EmpPers AS ep
SELECT
r.[Org Level]
,ISNULL(r.JanuaryBudget,0) AS JanuaryBudget
,ISNULL(r.JanuaryActual,0) AS JanuaryActual
,ISNULL(SUM(r.JanuaryActual-r.JanuaryBudget) OVER (PARTITION BY r.[Org Level]),0) AS [+/-]
,ISNULL(r.FebruaryBudget,0) AS FebruaryBudget
,ISNULL(r.FebruaryActual,0) AS FebruaryActual
,ISNULL(SUM(r.FebruaryActual-r.FebruaryBudget) OVER (PARTITION BY r.[Org Level]),0) AS [+/-]
,ISNULL(r.MarchBudget,0) AS MarchBudget
,ISNULL(r.MarchActual,0) AS MarchActual
,ISNULL(SUM(r.MarchActual-r.MarchBudget) OVER (PARTITION BY r.[Org Level]),0) AS [+/-]
FROM
(
SELECT
bud.[Org Level]
,SUM(CAST(bud.[JanuaryBudget] AS DECIMAL(9,2))) OVER (PARTITION BY bud.[Org Level]) AS [JanuaryBudget]
,SUM(CAST(bud.[FebruaryBudget] AS DECIMAL(9,2))) OVER (PARTITION BY bud.[Org Level]) AS [FebruaryBudget]
,SUM(CAST(bud.[MarchBudget] AS DECIMAL(9,2))) OVER (PARTITION BY bud.[Org Level]) AS [MarchBudget]
,SUM(CAST(ep.[JanuaryActual] AS DECIMAL(9,2))) OVER (PARTITION BY ep.[Org Level]) AS [JanuaryActual]
,SUM(CAST(ep.[FebruaryActual] AS DECIMAL(9,2))) OVER (PARTITION BY ep.[Org Level]) AS [FebruaryActual]
,SUM(CAST(ep.[MarchActual] AS DECIMAL(9,2))) OVER (PARTITION BY ep.[Org Level]) AS [MarchActual]
FROM
#OvertimeBudget2013 AS bud
LEFT OUTER JOIN
#EmpPers AS ep
ON ep.[Org Level] = bud.[Org Level]
AND ep.[Overtime Code] = bud.[Overtime Code]
) r