尝试以下操作:
declare @product table (Id int, Name varchar(100))
insert into @product select 1, 'Product 1' union select 2, 'Product 2'
declare @ProductPeople table(IdProduct int, IdPerson int, Priority int)
insert into @ProductPeople
select 1, 1, 1 union select 1, 2, 2 union select 2, 1, 1 union select 2, 2, 2
declare @People table(Id int, Name varchar(100))
insert into @People select 1, 'Person1' union select 2, 'Person2'
select ProductName, [1] 'PersonPriority1', [2] 'PersonPriority2'
from
(
select pd.Name as ProductName, ppl.Name, pp.Priority from @People ppl
join @ProductPeople pp on pp.IdPerson = ppl.Id
join @product pd on pd.Id = pp.IdProduct
)t
pivot
(
max(Name) for priority in ([1], [2]))pvt
谷歌SQL PIVOT。 – 2014-12-03 15:16:37
@TabAlleman感谢downvote和非常有见地的评论。 – ibiza 2014-12-03 15:20:46
@TabAlleman虽然在概念上这是重要的,但并不需要像PIVOTs最适合聚合。这是当前行的多个引用的简单问题。我不认为这个问题,即使是相当基本的,也值得赞同(因为选票和评论之间没有直接关系,所以这个问题不针对你)。 – 2014-12-03 15:23:28