2010-07-06 4 views
1

간단히 말해, 여러 개의 단일 문자를 반환하는 select가 있으므로 작동하지 않습니다. 모든 단일 문자를 단일 반환 문자열로 묶는 방법이 있습니까?Select의 여러 반환 된 문자를 하나의 문자열로 압축

나의 현재 느리고 추한 솔루션 :

,'('+(Select Left(max(AE_D1),1) 
     FROM ACCESS_EVENTS 
     WHERE LEFT(AE_D1,1) like 'W' 
     AND replace(HR.firstname,' ','')+' '+replace(HR.lastname, ' ','') LIKE Left(AE_D2,len(replace(HR.firstname,' ','')+' '+replace(HR.lastname, ' ','')))) +')' 
+'('+(Select Left(max(AE_D1),1) 
     FROM ACCESS_EVENTS 
     WHERE LEFT(AE_D1,1) like 'M' 
     AND replace(HR.firstname,' ','')+' '+replace(HR.lastname, ' ','') LIKE Left(AE_D2,len(replace(HR.firstname,' ','')+' '+replace(HR.lastname, ' ','')))) +')' 

. . . 모든 케이스가 다룰 때까지 반복하십시오. . .

EDIT - 추가 정보 : 각 'W'또는 'M'은 이벤트가 발생한 위치와 관련된 액세스 이벤트 이름의 첫 번째 문자입니다. 커버 할 약 9 가지의 다른 이벤트 문자가 있습니다. 쿼리의 요점은 사람이 자신의 이름과 관련된 둘 이상의 영역의 이벤트를 가지고있을 때를 보여주는 것입니다. 이제 문제는 그냥 깨끗하게 표시하는 것입니다.

+0

모든 문자열 조작은 인덱스를 사용할 수 없도록 만듭니다. 따라서 데이터를 이와 같이 저장하면 안됩니다. –

+0

예, HR 테이블에 원하는 데이터가 너무 많습니다. 그러나 나는 그것을 고칠 어떤 입장이 아니다. : –

+0

찾고있는 케이스는 무엇입니까? –

답변

0

난 당신이 this을 읽고 싶은 생각합니다.

+0

고맙습니다. 그것은 훌륭한 문제의 소스와 예제였습니다. –

관련 문제