2015-02-12 2 views
0

Я искал и пробовал разные запросы в SQL Server 2008 R2, но не смог получить результаты, которые я ищу. Вот мой вопрос по запросу. В той же таблице У меня есть следующиеSQL Отображение повторяющихся значений с одним и тем же идентификатором родителя в следующем столбце

ObjectID ParentID FlowerID 
1   5   100 
2   1   100 
3   1   105 
4   5   103 

Я пытаюсь получить ParentID, который имеет несколько FlowerID для отображения на следующей колонке, так это будет выглядеть примерно так.

ParentID FlowerID1 FlowerID2 
5   100   103 
1   100   105 

Любой может указать мне на исправление, и я мог бы выяснить остальное.

спасибо!

ответ

0

Проверьте это:

declare @data as table(ObjectID int,ParentID int,FlowerID int) 
insert into @data values(1 ,5, 100) 
insert into @data values(2 ,1, 100) 
insert into @data values(3 ,1, 105) 
insert into @data values(4, 5, 103) 
select d1.ParentID,stuff((select ' '+ convert(varchar,d2.FlowerID) from @data d2 where d2.ParentID = d1.ParentID for xml path('')),1,1,'') from @data d1 group by d1.ParentID having count(*) > 1 
0

Это, как правило, осуществляется с помощью PIVOT:

SELECT ParentID, [FlowerID1], [FlowerID2] 
FROM 
    (SELECT ParentID, FlowerID, 
      'FlowerID' + CAST(ROW_NUMBER() OVER (PARTITION BY ParentID ORDER BY FlowerID) AS VARCHAR(2)) AS FlowerLabel 
    FROM mytable) AS src 
PIVOT 
( 
    MAX(FlowerID)  
    FOR FlowerLabel IN ([FlowerID1], [FlowerID2]) 
) pvt 

Выход:

ParentID FlowerID1 FlowerID2 
----------------------------------- 
1   100   105 
5   100   103 

SQL Fiddle Demo here

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