2013-04-12 1 views
1

나는이Access SQL에서 met 기준에 따라 한 행만 반환하는 방법은 무엇입니까?

CUSTID  POLICY  TYPE RANDOMTHING ETC 

처럼 보인다 그리고 때로는 그렇지 않으면 나머지 필드에 대해 서로 다른 값을 CUSTID 당 다중 행을있을 것입니다 데이터가 있습니다. CUSTID 당 하나의 행만 반환하고 첫 번째 행의 값만 가져옵니다 (나머지는 무시함).

먼저 CUSTID를 적용 해 보았지만 작동하지 않습니다.

+0

검색어의 일부로 'TOP 1'술어를 사용해 보셨습니까? (나는 당신이 SQL 문을 쓰고 있다고 가정하고있다). –

+0

"TOP 1"은 어떻게합니까? 그리고 네, 나는 SQL 문을 편집 할 수 –

+0

봤 거든이게 내가 필요하다고 생각하지 않습니다. 내 데이터 집합의 맨 위 행만 반환합니다. CUSTID 당 "최상위"행이 필요합니다 (실제로 연습 내 CUSTID는 두 번째 필드와 같습니다) –

답변

1

난 당신이 예에서

SELECT t1.* 
FROM yourTable t1 INNER JOIN 
    (
     SELECT CUSTID, MIN(POLICY) AS MinOfPOLICY 
     FROM yourTable 
     GROUP BY CUSTID 
    ) t2 ON t1.CUSTID = t2.CUSTID AND t1.POLICY = t2.MinOfPOLICY 
ORDER BY 1 

같은 것을 할 생각 t1t2 테이블 별칭이다. 같은 테이블을 두 번 이상 참조하는 쿼리를 생성 할 때 대부분의 경우 열 참조를 명확히하려면 테이블 별칭이 필요합니다. 예를 들어, CUSTID이라고 말하면 안됩니다. 이 yourTable의 첫 번째 인스턴스인지, 두 번째 인스턴스인지 여부가 명확하지 않기 때문입니다.

yourTable t1은 별칭을으로 사용하여 "yourTable"을 의미하므로 테이블 이름 뒤에 바로 별칭을 지정하여 테이블에 별칭을 지정할 수 있습니다. 다른 별칭 인 t2GROUP BY 하위 쿼리 (대괄호 안에있는 하위 쿼리)의 별칭입니다.

+1

입니다. 나에게 좋은 추측처럼 보입니다. :-) 그게 그가하는 일이 아니라면 그는 표본 데이터와 표본에서 원하는 출력을 보여 주어야합니다. – HansUp

+0

@HansUp [TYPE]은 암시 적 정렬의 유일한 후보였습니다. Sort on RANDOMTHING이 최상의 선택이 아닌 것처럼 보였습니다 .... :) –

+0

여기 t1과 t2는 무엇인지 이해가 안됩니까? 또는 "yourTable t1"을 구문 분석하는 방법. 내 쿼리 이름이 MyQuery라고 말하십시오. –

관련 문제