2014-02-24 4 views
0

액세스 테이블의 8 개 컬럼에서 개별 연락처를 선택하는 데 SQL 코드를 쓰는 데 어려움이 있습니다. 중복되지 않도록 고유 한 결과 만 얻고 싶습니다. 아래는 제가 시도한 것입니다.SQL - 여러 컬럼에서 고유 한 것을 선택하십시오.

cmd.CommandText = "select distinct c1, c2, c3, c4, c5, c6, c7, c8 
        from table 
        where state IN (" + paramClause.ToString() + ")"; 

내 목적은 중복되지 않은 라벨에 표시하는 것입니다.

+1

Google에 더 많은 정보를 제공해야합니다. 데이터, 구조 등의 예, 결과가 – mp3ferret

+0

인 것으로 기대하십시오. 원하는 내용을 더 분명하게 표현하려면 질문을 편집하십시오. 작성된 쿼리는 테이블에서 distinct * rows *를 반환해야합니다. [c1] - [c8] 열에 나타나는 별개의 값 *을 모두 나열하는 단일 열을 실제로 원하십니까? –

+0

흠, 좋아, 라벨에 "this"를 표시하고 싶지만 "this"가 무엇인지 아직 명확하지 않습니다. 몇 가지 샘플 데이터와 최종 결과의 예를 보여주십시오. –

답변

6

제대로 이해했다면 하나 이상의 열 (c1에서 c8까지)에 연락처가 있습니다.

그렇다면, 다음과 같이 SQL 문을 다시 작성하려고 :

SELECT C1 
FROM TABLE 
WHERE STATE IN (...) 
UNION 
SELECT C2 
FROM TABLE 
WHERE STATE IN (...) 
... 
UNION 
SELECT C8 
FROM TABLE 
WHERE STATE IN (...) 

UNION 연산자는 그 자체로 중복을 제거합니다. 나는이 당신을 도움이되기를 바랍니다

....

0

당신은이 :

cmd.CommandText = "select distinct c1, c2, c3, c4, c5, c6, c7, c8 
        from table 
        where state IN (" + paramClause.ToString() + ")"; 

하지만 당신은 작은 따옴표로 문자열을 포장해야합니다. 문제는 WHERE 절에 있다고 생각합니다. 다음을 시도하십시오.

cmd.CommandText = "select distinct c1, c2, c3, c4, c5, c6, c7, c8 
        from table 
        where state IN ('" + paramClause.ToString() + "')"; 
관련 문제