2012-02-07 4 views
0

쉼표로 구분 된 목록을 만들려고하고 파생 테이블을 사용하고 있습니다. 하지만 변수를 선언 할 수 없습니다. LEFT OUTER JOIN ... 어떻게해야합니까?SQL : 파생 테이블 내부에서 변수를 선언하려면 어떻게해야합니까?

LEFT OUTER JOIN (

       DECLARE @String AS VARCHAR(MAX) = NULL 
       SELECT @String = COALESCE(@String + ', ','') + Name 
       FROM MyTable 
       SELECT @String, Col1 
       FROM MyTable 
       GROUP BY Col1 

    ) AS T8 
    ON This = That 

정확하지 않은 구문 인 Declare 키워드에 오류가 발생합니다.

감사합니다.

답변

2

파생 테이블 내에서 변수를 선언 할 수 없습니다.

하지만 당신은 문 밖에서 선언하고 당신이 당신의 예에서와 같은 방식으로 사용할 수 있습니다

+0

나는 그것을 시도하고 오류를주는 "+ 이름"을 밑줄 : 조건이 예상되는 컨텍스트에서 지정된 부울 유형의 표현. – daveomcd

+0

테이블에 "이름"열이 있습니까? – Tim

+0

이름은 MyTable의 일부입니다. – daveomcd

2

변수가 정말로 테이블 변수 내에서 사용 할 수 없기 때문에 이해가되지 않습니다 요구 사항 . 그리고 테이블 변수 다음에 그것을 사용하고 싶다면, 여전히 이해가되지 않습니다 ... Col1의 각기 다른 값에 대해 한 번 변수의 여러 인스턴스를 기대합니까? 어쩌면 당신은 이것을 의미 :

LEFT OUTER JOIN 
(
    SELECT Col1, String = STUFF((
    SELECT ',' + Name 
     FROM dbo.MyTable AS i 
     WHERE i.Col1 = o.Col1 
     FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'),1,1,'') 
    FROM dbo.MyTable AS o 
    GROUP BY Col1 
) AS T8 
ON This = That 

그러나 T8 친절한 조금 나를 좀. 이 조인에 이미 얼마나 많은 테이블이 관련되어 있습니까?

+0

나는 그것이 8 살일 때 거짓말을하지 않을 것입니다 ... 더 나은 것은 전망을 만들고 거기에서부터 나아가는 것일까 요? – daveomcd

+0

해당 질문에 대한 충분한 정보가 없습니다. 테이블 구조, 샘플 데이터 및 원하는 결과를 포함하여 별도의 질문으로 전체 쿼리를 게시하고 최적화를 위해 도움을 요청하는 경우 일 수 있습니다. 8 테이블 조인은 DW 관련 스타 조인과 관련하여 나에게 조금 높은 것처럼 보입니다. –

관련 문제