2014-08-29 2 views
0

나는 이걸 잃어 버렸어. 나는 Access와 SQL을 처음 접하는 사람이다. 나는이 사이트와 Google에서이 답변을 찾았다.MS 액세스 - 최대 날짜로 반환 값

다른 테이블에 ID가 포함 된 3 개의 열이있는 테이블과 날짜가 있습니다.

열 1 (역할 ID) 열이 (의 actionId) 3 열 (SettingID) 4 열 (일)

내가 1 열 및 2 열 (이 너무 독특한 조합)에 의해 그룹이 필요합니다. SettingID가 다른 여러 인스턴스가 날짜별로 구분되어있을 수 있습니다.

나는 총계 선택 쿼리가 Column1과 2에 대해 Group by, 그 다음 Date 열에 대해 Max를 사용하여 작업을 수행한다고 생각합니다. 그러나 나는 단지 컬럼 3의 가치를 원한다.

내가 할 수있는 간단한 방법이 있습니까?

+0

도움 주셔서 감사합니다. 답이 완벽 해 졌기 때문에 SQL의 좀 더 많은 이론을 배울 필요가 있습니다. 쿼리의 디자인 모드를 사용하여 SQL을 작성하려고했습니다. Access에서 디자인 모드를 사용하여이 쿼리를 작성하는 방법을 알 수 없습니다. –

답변

0
select roleid, actionid, settingid 
from your_table t1 
inner join 
(
    select roleid, actionid, max(date) as mdate 
    from your_table 
    group by roleid, actionid 
) t2 on t1.roleid = t2.roleid 
    and t1.actionid = t2.actionid 
    and t1.date = t2.mdate 
+0

빠른 답변 juergen 주셔서 감사합니다 :) 나는 Access 2007을 사용하고 있는데 'FROM 절의 구문 오류'라고 말한 후 제안을 저장하려고 시도한 다음 JOIN을 강조 표시합니다. –

+0

Select 쿼리입니까, 아니면이 sql의 결과로 생성되는 테이블입니까? –

+0

't2'는 부질의 별칭입니다. –

0

이는 아주 잘 하위 쿼리를 지원하지 않습니다 액세스의 정말 오래된 버전 인 경우

당신은 MaxDateQuery로 저장을 별도의 쿼리

select roleid, actionid, max(date) as mdate 
from your_table 
group by roleid, actionid 

을 만들어이 둘레에 작업 할 수

또는 이와 유사한 것

그런 다음 저장된 쿼리를 후속 쿼리에서 사용하여 잃어버린 것을 얻을 수 있습니다.

select 
your_table.roleid, 
your_table.actionid, 
your_table.settingid 
from your_table 
inner join MaxDateQuery 
on your_table.roleid = MaxDateQuery.roleid 
and your_table.actionid = MaxDateQuery.actionid 
and your_table.date  = MaxDateQuery.mdate