2015-01-13 2 views
0

나는열의 모든 행을 변수에 넣는 방법은 무엇입니까?

내가 @products 변수에 열 @Split의 모든 값을 넣을
Declare @Split table 
(
Jurisdiction nvarchar(max) 
) 

Insert into @Split select Jurisdiction from tbLicence where AgentId [email protected]; 

Select * from @Split; 

Declare @products varchar(MAX); 

Select @products = Jurisdiction from @Split; 

Select @products; 

로 저장 프로 시저를 작성했습니다. 위의 코드는 @products에 마지막 행의 열 값만 넣습니다. 도와주세요!

답변

1

첫 번째 변수는 empty string으로 초기화하십시오. 그런 다음 모든 구분 기호를 사용하여 모든 행을 추가하십시오. 이것을 사용하십시오.

DECLARE @products VARCHAR(MAX)=''; 

SELECT @products += Isnull(Jurisdiction, '') + ',' 
FROM @Split; 

SELECT left(@products,len(@products)-1); 

또는 사용 For XML path()

set @products=(select ','+Jurisdiction from @Split for xml path('')) 

select right(@products,len(@products)-1) 
+1

플러스 원. 루프없이 좋은 해결책 :) –

0

이 힘은 당신은뿐만 아니라 XML 경로를 사용하는 ...하지만 연결할 것이라고 할 수 있습니다 ... 당신에게

Declare @Split table(Jurisdiction nvarchar(max)) 
Declare @products varchar(MAX)='' 
declare @count int=(select count(*) from @split) 
declare @a int=1 

Insert into @Split values ('a'),('b') 


while(@a<@count) 
begin 
    Select @products += Jurisdiction from @Split 
    set @[email protected]+1 

end 

select @products 
0

@Nida을하는 데 도움이 모든 값은 쉼표로 구분됩니다. 내가 XML 경로를 통해 수행 한 ...

Value One 
Value Two 
Value Three 
Value Four 
Value Five 

QUERY dbo.columnnames에서

샘플 값 ... 당신을 도움이 될 수 있습니다

declare @lv_table table(column_values varchar(100)) 
declare @product_v varchar(max) 
insert into @lv_table 
select * from dbo.columnnames 
set @product_v =(

select 
    Stuff(
     (
    SELECT ',' + column_values 
    FROM @lv_table 
    FOR XML PATH('') 
    ), 1, 1, '')) 

    select @product_v 

출력

Value One,Value Two,Value Three,Value Four,Value Five 
관련 문제