2014-02-07 2 views
0

У меня есть таблица данных. Мне нужно получить идентификатор (первый столбец) и соответствующие данные из двух столбцов в горизонтальном формате. Максимальный номер соответствующего LinkID случаев составляет 3 для ID. Поэтому нам нужно начать отображать данные, связанные с ПК, после трех столбцов. Я подсчитал «Общее количество встречаемости идентификатора» в 4-й колонке как TotalnoofoccurenceofID.Отображение вертикальных нормальных строк в горизонтальном формате

Моя доступна таблица

ID  LinkID  PC  TotalnoofoccurenceofID   

10R46 R*1005  8017 2    
10R46 R*10335  5019 2    
100R91 R*1005  8017 1    
10R91 R*243  8870 1    
10M95 R*4918  8305 3    
10M95 R*9017  8305 3    
10M95 R*9470  8221 3 

Я хотел бы, чтобы получить набор результатов, как это:

ID  TotalnoofoccurenceofID LinkID1  LinkID2  LinkID3 PC1  PC2  PC3        
10R46 2      R*1005  R*10335    8017 5019  
100R91 1      R*1005       8017   
10R91 1      R*243       8870   
10M95 3      R*4918  R*9017  R*9470 8305 8305 8221 

Если я описываю набор результатов, то,

First row :ID 10R46 and related 2 LinkID(under LinkID1 and LinkID2) and related 2 PCs(under PC1 and PC2) 

Second row :ID 100R91 and related 1 LinkID(under LinkID1) and related 1 PC(under PC1) 

Third row :ID 10R91 and related 1 LinkID(under LinkID1) and related 1 PC(under PC1) 

Fourth row :ID 10M95 and related 3 LinkID(under LinkID1,LinkID2,LinkID3) and related 3 PC(under PC1,PC2,PC3) 

Пожалуйста, обратите внимание, максимальное число LinkID составляет 3, а столбец ПК начинается после 3 LinkID столбцов.

Большое вам спасибо.

+0

Спасибо Али. Можете ли вы исправить второй ряд 8017 и 8870, попадающий под ПК (почтовые коды)? 8017,8017,8870,8305 принадлежит к PC1.Назначенные 4-значные Почтовые коды (ПК) 8017,5019,8017,8870,8305,8221. .. нужно подходить к колонкам ПК. Спасибо. – Explorer

+0

, поскольку вы указали, что максимум он может идти только до 3-х столбцов. использовать самостоятельно левый присоединиться. – KumarHarsh

+0

Привет, KumarHarsh, Каков фактический код для этого «Я», чтобы присоединиться к результату? .Thanks. – Explorer

ответ

1

Проверить это,

Declare @t table(ID varchar(50),LinkID varchar(50),PC int, TotalnoofoccurenceofID int)    
insert into @t 
select '10R46', 'R*1005', 8017, 2 union all    
select '10R46', 'R*10335', 5019, 2 union all    
select '100R91', 'R*1005', 8017, 1 union all    
select '10R91', 'R*243', 8870, 1 union all    
select '10M95', 'R*4918', 8305,  3 union all    
select '10M95', 'R*9017', 8305, 3 union all    
select '10M95', 'R*9470', 8221, 3 

;with cte as 
(select *,ROW_NUMBER()over(partition by id order by id)rn from @t) 

select a.ID,b.LinkID,c.LinkID,d.LinkID,b.PC,c.PC,d.PC from cte a 
left join cte b on a.id=b.id and b.rn=1 
left join cte c on a.id=c.id and c.rn=2 
left join cte d on a.id=d.id and d.rn=3 
where a.rn=1 
+0

Привет, KumarHarsh Спасибо вам большое. он отлично работает. Спасибо. – Explorer

+0

@ QUSER, ЕСЛИ ЕГО РАБОТАЕТ ДЛЯ ВАС, тогда plz отметьте это как ответ – KumarHarsh

+0

Hi KumarHarsh. Сделано. Простите за задержку. Просто проверила почту. – Explorer

Смежные вопросы