당신은 하위 선택
SELECT
X.EmployeeID,
X.d1 AS ClassDate_1, ec1.ClassHours AS ClassHours_1,
X.d2 AS ClassDate_2, ec2.ClassHours AS ClassHours_2
FROM
((SELECT e.EmployeeID, Min(e.ClassDate) AS d1, Max(e.ClassDate) AS d2
FROM employee_classes AS e
GROUP BY e.EmployeeID) AS X
INNER JOIN employee_classes AS ec1
ON X.EmployeeID = ec1.EmployeeID AND X.d1 = ec1.ClassDate
)
INNER JOIN employee_classes AS ec2
ON X.EmployeeID = ec2.EmployeeID AND X.d2 = ec2.ClassDate;
가 또는 쿼리로 중첩 된 선택을 저장할 수있는 쿼리를 만들어야합니다 (의는
query1
를 호출하자) :
SELECT e.EmployeeID, Min(e.ClassDate) AS d1, Max(e.ClassDate) AS d2
FROM employee_classes AS e
GROUP BY e.EmployeeID
두 번째 쿼리에서 사용
시간이
실제로 간단한 해결책이
SELECT e.EmployeeID, Min(e.ClassDate) AS ClassDate_1, Max(e.ClassDate) AS ClassDate_2
FROM employee_classes AS e
GROUP BY e.EmployeeID
표시되지 않은 경우
SELECT
X.EmployeeID,
X.d1 AS ClassDate_1, ec1.ClassHours AS ClassHours_1,
X.d2 AS ClassDate_2, ec2.ClassHours AS ClassHours_2
FROM
(query1 AS X
INNER JOIN employee_classes AS ec1
ON X.EmployeeID = ec1.EmployeeID AND X.d1 = ec1.ClassDate
)
INNER JOIN employee_classes AS ec2
ON X.EmployeeID = ec2.EmployeeID AND X.d2 = ec2.ClassDate;
그것은 그러나 그것은 테이블이 EmployeeID
및 ClassDate
으로 분류된다고 가정 훨씬 쉬울 것입니다. 이 가정은 자연 정렬 순서가 보장되지 않으므로 안전하지 않습니다. 액세스는 언제든지 다른 방식으로 레코드를 재구성하도록 "결정"할 수 있습니다.
SELECT
EmployeeID,
First(ClassDate) AS ClassDate_1, First(ClassHours) AS ClassHours_1,
Last(ClassDate) AS ClassDate_2, Last(ClassHours) AS ClassHours_2
FROM
employee_classes
GROUP BY
EmployeeID
ORDER BY
EmployeeID;
는 여기서 다시 하위 선택은 하위 쿼리 또는 두 번째 쿼리 중 하나가 필요합니다,
SELECT
EmployeeID,
First(ClassDate) AS ClassDate_1, First(ClassHours) AS ClassHours_1,
Last(ClassDate) AS ClassDate_2, Last(ClassHours) AS ClassHours_2
FROM
(SELECT * FROM employee_classes ORDER BY EmployeeID, ClassDate)
GROUP BY
EmployeeID
ORDER BY
EmployeeID;
되었던간에 도움을 줄 수 있습니다.
나는 그렇게 보이는 테이블을하지 않을 것 - 그것은 데이터베이스 정규화의 첫 번째 규칙을 위반하는 것입니다. 직원 테이블과 클래스 테이블을 유지하고 원하는 결과를 제공하는 쿼리를 작성할 수 있습니다. – maneesha
안녕하세요 maneesha. 그것이 내가하고 싶은 일입니다.원래 테이블을 그대로 유지하지만 EmployeeID에 공통 인 필드를 같은 행으로 이동시키는 쿼리를 만듭니다. 그 결과를 얻기 위해 쿼리를 작성하는 방법을 모르겠습니다. – ultraviolet