Reputation: 1
SELECT DISTINCT
OrganizationCode,
OrganizationDescription,
FullName,
EmpNo,
EmployeeStatus,
EmploymentStatus,
CONVERT(varchar, LastHireDate, 101) AS LastHireDate,
CONVERT(varchar, TerminationDate, 101) AS TerminationDate,
PositionCodeDescription,
CONVERT(varchar, POSITIONFROMEFFECTDATE, 101) AS POSITIONFROMEFFECTDATE,
CONVERT(varchar, POSITIONTOEFFECTDATE, 101) AS POSITIONTOEFFECTDATE,
TerminationType,
EmploymentStatusReason,
CASE
WHEN EMPLOYEEJOB_CURR.TERMINATIONDATE IS NULL
THEN (DATEDIFF(MONTH, EMPLOYEEJOB_CURR.LASTHIREDATE, GETDATE()))
ELSE DATEDIFF(MONTH, EMPLOYEEJOB_CURR.LASTHIREDATE, EMPLOYEEJOB_CURR.TERMINATIONDATE)
END AS InService,
CASE
WHEN VPERSON_STATUS_POSITION.POSITIONTOEFFECTDATE > '01-01-2999'
AND EMPLOYEEJOB_CURR.TERMINATIONDATE IS NULL
THEN (DATEDIFF(MONTH, VPERSON_STATUS_POSITION.POSITIONFROMEFFECTDATE, GETDATE()))
WHEN VPERSON_STATUS_POSITION.POSITIONTOEFFECTDATE > '01-01-2999'
AND EMPLOYEEJOB_CURR.TERMINATIONDATE IS NOT NULL
THEN (DATEDIFF(MONTH, VPERSON_STATUS_POSITION.POSITIONFROMEFFECTDATE, EMPLOYEEJOB_CURR.TERMINATIONDATE))
ELSE DATEDIFF(MONTH, VPERSON_STATUS_POSITION.POSITIONFROMEFFECTDATE, VPERSON_STATUS_POSITION.POSITIONTOEFFECTDATE)
END AS [IN_POSITION],
FROM
EmployeeJob_Curr, Dept_fac_Curr, VPERSON_STATUS_POSITION
WHERE
EmployeeJob_Curr.PositionIdNo = Dept_fac_Curr.PositionIdNo
AND VPERSON_STATUS_POSITION.PersonIdNo = EmployeeJob_Curr.PersonIdNo
ORDER BY
OrganizationCode ASC
I am super new with SQL, please help.
EmpNo, EmployeeStatus, EmploymentStatus, LastHireDate, and TerminationDate all show an error
Ambiguous Column Names
after I add another view :VPERSON_STATUS_POSITION. Not sure why, before adding it, the query works just fine.
Upvotes: 0
Views: 525
Reputation: 32599
You can eliminate this error by using meaningful aliases and joining
your tables in a clear and concise fashion.
With the example below you would prefix each column in the select
with either e.
or d.
or v.
depending on which table contains the column - or which table you want to use if a column exists in multiple tables as it does to cause your error.
select e.OrganizationCode,
...
FROM EmployeeJob_Curr e
join Dept_fac_Curr d on d.PositionIdNo=e.PositionIdNo
join VPERSON_STATUS_POSITION v on v.PersonIdNo=e.PersonIdNo
Upvotes: 1