좋아, 테이블 3 개가 있다고 가정 해 봅시다 : 달력, 사용자 및 요청.열 값을 기반으로 GROUP BY를 사용할 때 고유 행을 반환하십시오.
Calendar.ID, Users.ID 및 requests.ID는 모두 고유합니다. 나는 dbo.Calendar 플러스 users.color 및 requests.Status에서 모든 것을 끌어려고
(즉, 중요한 경우)
SELECT calendar.ID, calendar.date, calendar.type, calendar.userID, users.color, requests.status
FROM calendar LEFT OUTER JOIN
requests ON calendar.ID = requests.calendarID LEFT OUTER JOIN
users ON calendar.userID = users.userID
WHERE(calendar.date >= '2016-06-01') AND (calendar.date <= '2016-12-30')
group by calendar.id, calendar.date, calendar.type, calendar.userID, users.color, requests.status
내가 얻을 완료 요청이 있다면 내가 직면하고있어 문제는 중복 된 행이지만이 경우 "보류 중"만 표시되어야합니다.
ID date type userID color status
4 2016-06-16 RE A #cc99ff pending
5 2016-06-17 RE A #cc99ff accepted
5 2016-06-17 RE A #cc99ff pending
6 2016-06-13 LM B #ffff99 NULL
7 2016-06-13 LM B #ffff99 accepted
내가이를 얻으려고 :
ID date type userID color status
4 2016-06-16 RE A #cc99ff pending
5 2016-06-17 RE A #cc99ff pending
6 2016-06-13 LM B #ffff99 NULL
7 2016-06-13 LM B #ffff99 accepted
는 참고로 나는 8 년 이상 SQL 감동하지 않은이 내가 일하고 있어요 단지 개인적인 프로젝트입니다.
사용 화레 상태를 <> '접수' –
미안 해요, 난 여전히 다른 기록을 필요로하는 '받아 들여진'가치가있다. – Mark
에 상태 열을 표시 할 때 group by를 사용하는 동안 'accepted'을 생략 할 수 없습니다. 왜냐하면 논리적으로 동일한 ID 날짜 및 기타 열에 대해 '보류 중'및 '수락 됨'이 모두 다르기 때문입니다. –