2
를 산출하지
나는이 특정 쿼리에 관련된 세 개의 테이블이 있습니다SQL은 예상 결과
- Lawson_Employees :
LawsonID
(PK),LastName
,FirstName
,AccCode
(숫자) - Lawson_DeptInfo :
AccCode
(PK),AccCode2
을EmpID
(PK),ACLS
(날짜),EP
(날짜),CPR
(날짜),:DisplayName
- tblExpirationDates을 (HR이 설정 요구하지 않음) 076,973,210 (날짜),
PALS
(날짜),Note
목표는 이미 하나 개 이상의 인증에 만료 모든 사람들에 대해보고하는 데 필요한 데이터를 얻을 수 있습니다, 또는 다음 90 만료 예정 일.
몇 가지 중요한 참고 사항 :
- 이것은 VBScript를의 일부로 실행되는, 그래서 스크립트가 실행될 때 90 일 날짜가 계산되고있다. 이 질문이 게시 될 당시의 결과이므로 자리 표시 자로
2010-08-31
을 사용하고 있습니다. - 모든 카드는 월말에 만료됩니다. (위의 날짜가 8 월 말과 90 일이 아닌 이유입니다.)
- 유효한 EP 카드는 ACLS 인증을 대신하지만 일부 직원에게는 후자 만 필요합니다. (이 질문에 대한 답변을 얻을 때까지 그것에 대해 걱정하지 않을 것이지만, 도움을받을 수 있다면 받아 들일 것입니다.)
- CPR 열은 그들이 우리에게 가져간 마지막 수업의 만료 날짜를 포함합니다. (그들이 우리와 함께 수업을 듣지 않았다면 NULL)
- CPR_Imported 열은 그들이 다른 곳에서 가져간 마지막 수업의 만료일을 포함합니다. (다른 곳으로 옮기지 않으면 NULL, 다음 정책에 대해서는 bravo)
- 다른 보고서에서는 CPR 클래스를 구분하는 것이 중요합니다. 이 보고서의 목적을 위해 우리가 정말로 염두에 두는 것은 가장 최근의 것이거나 적어도 현재 현재의 것입니다.
- 내가해야한다면, ACLS와 PALS는 당분간 큰 문제인 심폐 소생술 훈련을 준수하지 않아 무시할 것입니다. (다른 사람이되지 않습니다하지 않는 것이, 그러나 그들은 ... 마지막 회의에서 언급되지 않은) 여기
나에게 좋은 데이터를주고 내가 지금까지 가지고있는 쿼리입니다 :
SELECT
iEmp.LawsonID, iEmp.LastName, iEmp.FirstName,
dept.AccCode2, dept.DisplayName,
Exp.ACLS, Exp.EP, Exp.CPR, Exp.CPR_Imported, Exp.PALS, Exp.Note
FROM (Lawson_Employees AS iEmp
LEFT JOIN Lawson_DeptInfo AS dept ON dept.AccCode = iEmp.AccCode)
LEFT JOIN tblExpirationDates AS Exp ON iEmp.LawsonID = Exp.EmpID
WHERE iEmp.CurrentEmp = 1
AND ((Exp.ACLS <= #2010-08-31#
AND Exp.ACLS IS NOT NULL)
OR (Exp.CPR <= #2010-08-31#
AND Exp.CPR_Imported <= #2010-08-31#)
OR (Exp.PALS <= #2010-08-31#
AND Exp.PALS IS NOT NULL))
ORDER BY dept.AccCode2, iEmp.LastName, iEmp.FirstName;
을
결과 집합을 검토 한 결과 결과 집합에 있어야하는 만료 날짜가 누락되었다고 생각합니다. 내가 놓친 게 있니? 이것은 부서에있는 유일한 개발자가되는 짜증나는 부분입니다 ... 작은 도움을 요청할 아무도.
가 이것에 대한되는 Nz()를 사용할 필요는 실제로 없다, 나는 불필요한 함수 호출을 피하는 것을 권 해드립니다. –
그래서 무엇을 권하고 싶습니까? 그것은 데이터가 반환되지 않습니다 OP에서 나타납니다, 그것은 nulls가 제외되고 있기 때문에 가능성이 높습니다. Nz를 사용하는 것이 훨씬 쉬운 방법입니다. 그리고 대체 솔루션이 제시되지 않는 한 이것이 예외 일 수있는 경우 일반화 된 의견을 표결하는 데 아무런 의미가 없습니다. – Fionnuala
@Remount, 결과가 다시 나타납니다. 그들은 단지 불완전 해 보입니다. 우리는 화요일 (사무실은 휴일로 월요일 휴무입니다)까지 답변을 테스트 할 수 없으므로 – AnonJr