2014-03-04 3 views
1

XML 경로를 사용하여 연결된 데이터에서 후행 쉼표를 제거하려고합니다.열 오류에 대해 열 이름을 지정하지 않았습니다.

LEFT 함수 쿼리에서 XML Path 쿼리를 중첩하면 모든 종류의 오류가 발생합니다.

그것은 내게

잘못된 구문 오류 둥지 ')'[테라] 전에 폐쇄 브래킷 가리키는

을 준다. 나는 내부 쿼리에 대한 별칭을 사용하는 경우

, 그것은 더 열이 어떤 도움을 이해할 수있을 것이다

select 
    LEFT(tb.col1, LEN(tb.col1) - 2) 
from 
    (select 
     col1 + ', ' 
    from 
     tabSample 
    where 
     tabId = XXXX 
    For XMl Path('')) [tb] 

내 쿼리입니다

지정되지 나에게

을 제공합니다.

감사

답변

3
select STUFF((select ', ' + col1 
       from tabSample 
       where tabId = XXXX 
       For XMl Path(''),TYPE). 
       value('.','NVARCHAR(MAX)'),1,2,'') 

는 값 앞에 쉼표를 추가 한 후 바로 첫 번째 쉼표를 제거 STUFF 기능을 사용하십시오. 위의 예제는 쉼표 문제 만 처리합니다.

아마도 전체 쿼리를 살펴 봐야 할 것입니다.

+0

답변 해 주셔서 감사합니다. 하지만 여전히 '열 이름을 지정하지 못했습니다'오류가 발생합니다. ( –

+0

사용한 전체 쿼리 붙여 넣기 여기서이 XML 쿼리를 INNER 쿼리로 사용하고이 구문을 사용할 때 열이 지정되지 않았다는 메시지가 나타납니다. 내부 쿼리는 쿼리에서 반환 된 각 열에 대해 열 이름을 가져야합니다 –

+0

감사합니다. 테이블 이름이있는 columnName을 추가했습니다. 고마워요. –

관련 문제