У меня есть эта проблема, мне нужно transpose
данные, как вы делали бы это в Microsoft Excel, но через SQL ...
Вот некоторые примеры данных:
if object_id('tempdb..#Temp') is not null
drop table #Temp
create table #Temp (id int, Field varchar(100), [Value] varchar(max),DCLink int)
insert into #Temp (id,Field,[Value],DCLink) values
(1,'Name','ARABELLA',1800)
,(2,'Contact_Person','GRANGE',1800)
,(3,'Physical1','COUNTRY ESTATE',1800)
,(4,'Physical2','R67 DURBAN STR',1800)
,(5,'Physical3','CAPE TOWN',1800)
,(6,'Physical4','',1800)
,(7,'Physical5','',1800)
,(8,'PhysicalPC','',1800)
,(9,'Addressee','',1800)
,(10,'Post1','',1800)
,(11,'Post2','P O BOX 5493',1800)
,(12,'Post3','GROOTMOND',1800)
,(13,'Post4','',1800)
,(14,'Post5','',1800)
,(15,'PostPC','7195',1800)
,(16,'Delivered_To','PIET',1800)
,(17,'Telephone','029 428 0015',1800)
,(18,'Telephone2','028 428 0000',1800)
,(19,'Fax1','',1800)
,(20,'Fax2','',1800)
,(21,'Tax_Number','NOT TAX',1800)
,(22,'Registration','',1800)
,(23,'Credit_Limit','0',1800)
,(24,'On_Hold','0',1800)
,(25,'EMail','jan.fiskaal@arabella.com',1800)
,(26,'BranchCode','',1800)
,(27,'BankAccNum','',1800)
,(28,'CheckTerms','1',1800)
,(29,'cAccDescription','',1800)
,(30,'cWebPage','',1800)
,(31,'[Group]','C',1800)
,(32,'Area','WCA',1800)
,(33,'RepName','',1800)
,(34,'RepCode','',1800)
,(35,'BankName','',1800)
,(36,'PriceListName','Price List 1',1800)
,(37,'AgeCode','MNTH-STMT',1800)
,(38,'Name','BEACH ASSOCIATION',1602)
,(39,'Contact_Person','HARRY POTTER',1602)
,(40,'Physical1','3 BLUE HILLS DRIVE',1602)
,(41,'Physical2','BLUE HILLS',1602)
,(42,'Physical3','LOS ANGELES',1602)
,(43,'Physical4','',1602)
,(44,'Physical5','',1602)
,(45,'PhysicalPC','7441',1602)
,(46,'Addressee','',1602)
,(47,'Post1','',1602)
,(48,'Post2','PO BOX 237',1602)
,(49,'Post3','LOS ANGELES',1602)
,(50,'Post4','',1602)
,(51,'Post5','',1602)
,(52,'PostPC','7437',1602)
,(53,'Delivered_To','',1602)
,(54,'Telephone','031 678 0590',1602)
,(55,'Telephone2','',1602)
,(56,'Fax1','',1602)
,(57,'Fax2','031 678 0592',1602)
,(58,'Tax_Number','1234567890',1602)
,(59,'Registration','1765/4783/228',1602)
,(60,'Credit_Limit','0',1602)
,(61,'On_Hold','0',1602)
,(62,'EMail','Harry.Potter@beach.co.za',1602)
,(63,'BranchCode','',1602)
,(64,'BankAccNum','',1602)
,(65,'CheckTerms','1',1602)
,(66,'cAccDescription','',1602)
,(67,'cWebPage','',1602)
,(68,'[Group]','C',1602)
,(69,'Area','WCA',1602)
,(70,'RepName','',1602)
,(71,'RepCode','',1602)
,(72,'BankName','',1602)
,(73,'PriceListName','Price List 1',1602)
select
*
from #Temp
Приведенные выше результаты выглядят так:
Вот что я пробовал:
select
*
, c.*
from ClientUpdateLog
cross apply
(
values
('Name',[Value])
,('Contact_Person',[Value])
,('Physical1',[Value])
,('Physical2',[Value])
,('Physical3',[Value])
,('Physical4',[Value])
,('Physical5',[Value])
,('PhysicalPC',[Value])
,('Addressee',[Value])
,('Post1',[Value])
,('Post2',[Value])
,('Post3',[Value])
,('Post4',[Value])
,('Post5',[Value])
,('PostPC',[Value])
,('Delivered_To',[Value])
,('Telephone',[Value])
,('Telephone2',[Value])
,('Fax1',[Value])
,('Fax2',[Value])
,('Tax_Number',[Value])
,('Registration',[Value])
,('Credit_Limit',[Value])
,('On_Hold',[Value])
,('EMail',[Value])
,('BranchCode',[Value])
,('BankAccNum',[Value])
,('CheckTerms',[Value])
,('cAccDescription',[Value])
,('cWebPage',[Value])
,('[Group]',[Value])
,('Area',[Value])
,('RepName',[Value])
,('RepCode',[Value])
,('BankName',[Value])
,('PriceListName',[Value])
,('AgeCode',[Value])
) c (
Name
, Contact_Person
, Physical1
, Physical2
, Physical3
, Physical4
, Physical5
, PhysicalPC
, Addressee
, Post1
, Post2
, Post3
, Post4
, Post5
, PostPC
, Delivered_To
, Telephone
, Telephone2
, Fax1
, Fax2
, Tax_Number
, Registration
, Credit_Limit
, On_Hold
, EMail
, BranchCode
, BankAccNum
, CheckTerms
, cAccDescription
, cWebPage
, [Group]
, Area
, RepName
, RepCode
, BankName
, PriceListName
, AgeCode
)
Мне нужно транспонировать это будет выглядеть так:
Я не могу включить все ожидаемые результаты из-за пробела ...
У меня есть пробовал Cross Apply
, но я все время застреваю.
Я не пробовал Pivot
, как я думал, что это может сработать?
Ваша помощь будет оценена!