L
Lucinda
Hi,
I am not sure if this is an Access question or a SQL question. I have
written an Access-front end database (2003) with a SQL back-end. I need to
calulate vacatation/personal balances, however, since its the first of the
year all employees receive 16 hours of personal time. They have yet to take
the personal time so I am trying to calculate 16 - 0 = 16. Please keep in
mind that this query does several functions by date: Here is my query:
SELECT A.EMPLID, A.NAME, H.DESCR AS DEPTNAME, C.COMPANY, C.HOURLY_RT,
dbo.[2009_Vac_Balances12-23].Total_Vac_Earned,
SUM(C.HOURLY_RT *
dbo.[2009_Vac_Balances12-23].Total_Vac_Earned) AS EXPR2, CASE WHEN
datepart(mm, F.HIRE_DT)
< 07 THEN SUM(16 - COALESCE
(dbo.Floater_Used1.Floater_Used, 0)) ELSE SUM(8 - COALESCE
(dbo.Floater_Used1.Floater_Used, 0)) END AS EXPR1,
CAST(SUM(C.HOURLY_RT *
(dbo.[2009_Vac_Balances12-23].Total_Vac_Earned + COALESCE
(dbo.Floater_Balance.Total_Floater_Balance, 0)))
AS MONEY) AS LIABILITY, G.NAME AS SUPERVISOR_NAME,
C.DEPTID, dbo.Floater_Balance.Total_Floater_Balance, CASE WHEN datepart(mm,
F.HIRE_DT) < 07 THEN SUM(16 - COALESCE
(dbo.Floater_Used1.Floater_Used, 0)) ELSE SUM(8 - COALESCE
(dbo.Floater_Used1.Floater_Used, 0))
END AS floater1_balance
FROM dbo.[2009_Vac_Balances12-23] RIGHT OUTER JOIN
dbo.Floater_Balance RIGHT OUTER JOIN
dbo.PS_JOB C INNER JOIN
dbo.PS_PERSONAL_DATA A ON C.EMPLID = A.EMPLID INNER JOIN
dbo.PS_EMPLOYMENT F ON C.EMPLID = F.EMPLID AND
C.EMPL_RCD_NBR = F.EMPL_RCD_NBR INNER JOIN
dbo.PS_PERSONAL_DATA G ON F.SUPERVISOR_ID = G.EMPLID
INNER JOIN
dbo.PS_DEPT_TBL H ON C.DEPTID = H.DEPTID LEFT OUTER JOIN
dbo.Floater_Used1 ON A.EMPLID =
dbo.Floater_Used1.EMPLID ON dbo.Floater_Balance.EMPLID = A.EMPLID ON
dbo.[2009_Vac_Balances12-23].EMPLID = A.EMPLID
WHERE (C.EFFDT =
(SELECT MAX(E.EFFDT)
FROM dbo.PS_JOB E
WHERE C.EMPLID = E.EMPLID AND
C.EMPL_RCD_NBR = E.EMPL_RCD_NBR AND E.EFFDT <= GETDATE())) AND (H.EFFDT =
(SELECT MAX(I.EFFDT)
FROM PS_DEPT_TBL I
WHERE H.DEPTID = I.DEPTID AND I.EFFDT <=
GETDATE()))
GROUP BY A.EMPLID, A.NAME, H.DESCR,
dbo.Floater_Balance.Total_Floater_Balance,
dbo.[2009_Vac_Balances12-23].Total_Vac_Earned, F.SUPERVISOR_ID,
G.NAME, dbo.Floater_Balance.EMPLID, C.DEPTID,
C.HOURLY_RT, F.HIRE_DT, C.COMPANY
HAVING (dbo.[2009_Vac_Balances12-23].Total_Vac_Earned <> 0)
As you can see I'm trying to write the liability by multiplying the hourly
rate, by the 12-23 balances + 16 (for the year beginning balance) - 0
personal (floater) days used. My calculation comes back with the hourly rate
multiplied by the 12-23 balances but does not pick up the 16 or 8 and does
not subtract the 0. HELP!!
I am not sure if this is an Access question or a SQL question. I have
written an Access-front end database (2003) with a SQL back-end. I need to
calulate vacatation/personal balances, however, since its the first of the
year all employees receive 16 hours of personal time. They have yet to take
the personal time so I am trying to calculate 16 - 0 = 16. Please keep in
mind that this query does several functions by date: Here is my query:
SELECT A.EMPLID, A.NAME, H.DESCR AS DEPTNAME, C.COMPANY, C.HOURLY_RT,
dbo.[2009_Vac_Balances12-23].Total_Vac_Earned,
SUM(C.HOURLY_RT *
dbo.[2009_Vac_Balances12-23].Total_Vac_Earned) AS EXPR2, CASE WHEN
datepart(mm, F.HIRE_DT)
< 07 THEN SUM(16 - COALESCE
(dbo.Floater_Used1.Floater_Used, 0)) ELSE SUM(8 - COALESCE
(dbo.Floater_Used1.Floater_Used, 0)) END AS EXPR1,
CAST(SUM(C.HOURLY_RT *
(dbo.[2009_Vac_Balances12-23].Total_Vac_Earned + COALESCE
(dbo.Floater_Balance.Total_Floater_Balance, 0)))
AS MONEY) AS LIABILITY, G.NAME AS SUPERVISOR_NAME,
C.DEPTID, dbo.Floater_Balance.Total_Floater_Balance, CASE WHEN datepart(mm,
F.HIRE_DT) < 07 THEN SUM(16 - COALESCE
(dbo.Floater_Used1.Floater_Used, 0)) ELSE SUM(8 - COALESCE
(dbo.Floater_Used1.Floater_Used, 0))
END AS floater1_balance
FROM dbo.[2009_Vac_Balances12-23] RIGHT OUTER JOIN
dbo.Floater_Balance RIGHT OUTER JOIN
dbo.PS_JOB C INNER JOIN
dbo.PS_PERSONAL_DATA A ON C.EMPLID = A.EMPLID INNER JOIN
dbo.PS_EMPLOYMENT F ON C.EMPLID = F.EMPLID AND
C.EMPL_RCD_NBR = F.EMPL_RCD_NBR INNER JOIN
dbo.PS_PERSONAL_DATA G ON F.SUPERVISOR_ID = G.EMPLID
INNER JOIN
dbo.PS_DEPT_TBL H ON C.DEPTID = H.DEPTID LEFT OUTER JOIN
dbo.Floater_Used1 ON A.EMPLID =
dbo.Floater_Used1.EMPLID ON dbo.Floater_Balance.EMPLID = A.EMPLID ON
dbo.[2009_Vac_Balances12-23].EMPLID = A.EMPLID
WHERE (C.EFFDT =
(SELECT MAX(E.EFFDT)
FROM dbo.PS_JOB E
WHERE C.EMPLID = E.EMPLID AND
C.EMPL_RCD_NBR = E.EMPL_RCD_NBR AND E.EFFDT <= GETDATE())) AND (H.EFFDT =
(SELECT MAX(I.EFFDT)
FROM PS_DEPT_TBL I
WHERE H.DEPTID = I.DEPTID AND I.EFFDT <=
GETDATE()))
GROUP BY A.EMPLID, A.NAME, H.DESCR,
dbo.Floater_Balance.Total_Floater_Balance,
dbo.[2009_Vac_Balances12-23].Total_Vac_Earned, F.SUPERVISOR_ID,
G.NAME, dbo.Floater_Balance.EMPLID, C.DEPTID,
C.HOURLY_RT, F.HIRE_DT, C.COMPANY
HAVING (dbo.[2009_Vac_Balances12-23].Total_Vac_Earned <> 0)
As you can see I'm trying to write the liability by multiplying the hourly
rate, by the 12-23 balances + 16 (for the year beginning balance) - 0
personal (floater) days used. My calculation comes back with the hourly rate
multiplied by the 12-23 balances but does not pick up the 16 or 8 and does
not subtract the 0. HELP!!