Below is the reference code on how to create Dynamic Pivot query :
create table Cust (custname varchar(20),invoiceno varchar(20),amount int)
Insert into Cust
Values ('aa','inv1',100)
,('aa','inv2',50)
,('bb','inv3',200)
Create table TESTCU (custname varchar(20),invoiceno varchar(20),itemno int,Accountno varchar(20))
Insert into TESTCU
VALUES ('aa','inv1',1,'act1'),
('aa','inv1',2,'act2'),
('aa','inv1',3,'act3'),
('aa','inv2',1,'act2'),
('bb','inv3',1,'act1'),
('bb','inv3',2,'act3')
declare @List varchar(200)
select @List =
STUFF((Select distinct ','+quotename(Accountno)
from TESTCU
FOR XML PATH('')),1,1,'')
declare @SQL nvarchar(2000)
set @SQL ='Select B.*,A.amount from CUST A INNER JOIN
(select * from (select custname,invoiceno,Accountno,1 as TR from TESTCU) PT PIVOT (MIN(TR) FOR ACCOUNTNO in (' +@LIST+')) as PS) B
ON B.invoiceno=A.invoiceno'
Execute SP_Executesql @SQL