2012-01-23 1 views
2

SQL Server 데이터베이스에 정보 테이블이 있고 첫 번째 테이블로 연결하려는 그룹 정보 테이블이 있습니다.SQL Server : gridview에서 concat 또는 여러 SELECT 쿼리가 필요합니까?

:

1 | 'foo' | 'bar,baz' 

표 2

:

1 | 'bar' 
1 | 'baz' 

내가 table2GROUP BY CONCAT를 수행하여 표 1에 그 세 번째 열에 대한 필요성을 대체합니다. 유일한 문제는 내가이 프로젝트를 개발 한 후에 SQL을 Oracle로 포팅해야한다는 것을 의식하고 있기 때문에 그리드 뷰의 한 열에 대해 별도의 SELECT를 수행하는 것이 더 나은 대안인가?

고마워요.

답변

1

쉬운 MS SQL의 CONCAT는 사용자가 XML에 다시 NVARCHAR에 필요한 변환 행을 수행 할 수 있습니다. 예 : Contacts (PK ID 포함) 및 ContactTypes (ContactID가 FK 인 두 개의 테이블이 1 개의 연락처에 대해 여러 행을 가질 수 있음)에 대해 두 개의 테이블이 있다고 상상해보십시오. 모든 유형을 1 행으로 연결해야합니다. 다음은이 작업을 수행하는 트릭 :

SELECT c.ContactID, CONVERT(VARCHAR(MAX), /* concatenate all Types to varchar */ 
(
        SELECT ct.ContactTypeDescription+ ', ' 
        FROM ContactTypes ct 
        JOIN Contacts c1 ON ct.ContactID = c1.ContactID 
        FOR XML PATH('') 
      )) AS ContactTypes, * 
      FROM Contacts c 

이것은해야이 같은 출력 :

 
1 | Type1, Type2, ... | ... 
2 | Type3, Type10, ... | ... 

+0

OK

몰라 오라클 포트에 대한이 도움이 되었으면 좋겠 ... 나는 이것을 사용하여 해결책을 찾았다. Oracle에 대한 쿼리를 다시 작성할 때 이것이 악몽을 불러 일으키지 않기를 바랍니다. 여기에 한 가지 질문이 있는데, 후행 ','을 제거하는 방법이 있습니까? – deed02392

+0

물론, 하위 문자열 또는 왼쪽 (필드, 렌 (필드) -2)을 사용할 수 있습니다. –

+0

러블리, 고마워. 토니 :) – deed02392