0
피벗 모드의 테이블에 값을 표시하는 결과를 표시하려고합니다. 그러나 다른 행의 열 이름은 Person_Id와 Author_Number의 조합이며 해당 열의 값은 Project_Id 여야합니다. 두 번째 열에서 등등 및 등등 person_id로 및 Author_Number의 조합이다두 개의 열이있는 피벗이 ms SQL을 결합합니다.
Client_Id 12345_1 12345_2 12346_1 12346_2 12346_1
Client1 Test1 Test1
Client2 Test2 Test2
Client3 Test3
참고 : 쉽게 이해하기 위해서, 아래의 샘플 결과를 참조하십시오. 여기
는 스크립트DECLARE @colsPivot AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @colsPivot = STUFF((SELECT ',' + QUOTENAME(c.col + '_'+cast(Author_Number as varchar(10)))
from Authors
cross apply
(
select CAST(Person_Id AS VARCHAR(10)) col
) c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query
= 'select Client_id, '[email protected]+'
from
(
select Client_id,
col+''_''+cast(Author_Number as varchar(10)) col, val
from
(
select Client_id, Project_id,
Person_Id,
Author_Number,
Family_Name,
First_Name
from Authors
) s
unpivot
(
val
for col in (Project_id)
) u
) x1
pivot
(
max(val)
for col in ('+ @colspivot +')
) p'
PRINT @query
exec(@query)
나는 문제가 스크립트 무엇인지 알아낼 수 없습니다 샘플 테이블 여기
CREATE TABLE [dbo].[Authors](
[Client_Id] [nvarchar](50) NOT NULL,
[Project_Id] [nvarchar](50) NOT NULL,
[Person_Id] [int] NOT NULL,
[Author_Number] [int] NOT NULL,
[Family_Name] [nvarchar](50) NULL,
[First_Name] [nvarchar](50) NULL,
)
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('Client1','TEST1',12345,1,'Giust','Fede')
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('Client1','TEST1',12345,2,'Ma','Ke')
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('Client2','TEST2',12346,1,'Jones','Peter')
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('Client2','TEST2',12346,2,'Davies','Bob')
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('Client3','TEST3',12346,3,'Richards','Craig')
입니다. 클라이언트 Id 열 뒤에 표시되는 값이 null
것은 당신이 또한 upvot 좋아합니다. 덕분에 –
- 고마워요! – user3472262
내 평판은 당신을 업 홀드하기에 충분하지 않습니다. 한번은 평판이 15 번 나옵니다. 고맙습니다. – user3472262