2016-07-16 5 views
0

테이블의 키, 값 쌍의 관점에서 레코드를 포함하는 테이블 변수가 있습니다. 키 테이블의 열이고 값이 그 열테이블에 keyvalue를 행으로 삽입하는 방법은 무엇입니까?

값이고 아래 I가 UsersInformation.This에서 상기 값이

DECLARE @Table TABLE( 
FieldName varchar(100), 
FieldValue varchar(max)) 

insert into @Table values('Title','NewFrom') 
insert into @Table values('Points','4') 
insert into @Table values('createdby','5') 

변수 테이블은 SQL 서버 물리적 테이블이 컬럼을 다음 갖고있다.

UserID int autoincrement(identity) 
Title nvarchar(100), 
Points int, 
createdby int 

@Table의 모든 값은 UserInformation 테이블의 단일 행이어야합니다.

어떻게 SQL Server를 사용할 수 있습니까?

+0

사용자 정보 테이블에 삽입 할 샘플 출력과 저장해야하는 열을 표시하십시오. –

+0

피봇/피벗 해제. 그러나이 시나리오는 매우 이상하게 보입니다. 그 값 (필드/값)은 어디서 얻고 있습니까? 영구 테이블에 저장되어 있거나 SP로 인수로 전달됩니까? –

+0

@IvanStarostin - 이것은 동적이며 코드에서 코드화 할 수 있습니다 .3 개의 열 값 (때로는 2 개의 값)이있는 경우가 있습니다. 모든 열은 null 값을 허용합니다. 어떤 생각? – result

답변

0

테스트하지 않았 그러나 이것은 당신이

DECLARE @Table TABLE( 
id int, 
FieldName varchar(100), 
FieldValue varchar(max)) 

insert into @Table values(1,'Title','NewFrom') 
insert into @Table values(1,'Points','4') 
insert into @Table values(1,'createdby','5') 

insert into @Table values(2,'Title','NewFrom2') 
insert into @Table values(2,'Points','44') 
insert into @Table values(2,'createdby','55') 

insert into @Table values(3,'Title','NewFrom3') 
insert into @Table values(3,'Points','444') 

그런 다음 쿼리를 실행할 수 있습니다 @table 소스에 키를 추가해야합니다 귀하의 의견을 바탕으로

INSERT INTO UsersInformation (Title, Points, createdby) 
SELECT Title, Points, createdby FROM (SELECT FieldName, FieldValue 
FROM @Table) AS SourceTable 
PIVOT (MAX(FieldValue) FOR FieldName IN ([Points], [Title], [createdby])) AS PivotTable; 

작동합니다 :

SELECT [Title], [Points], [createdby] 
FROM @Table 
PIVOT 
(
     max(FieldValue) FOR [FieldName] IN ([Title], [Points], [createdby]) 
) AS P 
+0

삽입 된 경우에만 나머지는 삽입되지 않습니다. 그것을 모두 수정할 수 있습니까? 또한이 열은 몇 번이고 동적입니다 @ 테이블은 2 또는 3 만 있습니다. 모든 열은 널값을 허용합니다. 또한 모든 아이디어를 업데이 트 스크립트를 만들 수 있습니까? – result

+0

@result 그게 효과가 있니? – Massanu

관련 문제