Посмотрите на использование Pivot в SQL Server. Вот хорошая ссылка, которая рассказывает, как это работает:
http://www.kodyaz.com/articles/t-sql-pivot-tables-in-sql-server-tutorial-with-examples.aspx
Хорошо, я думаю, у меня все получилось. Попробуйте это:
with temp as
(
select 'myGarden' as name, 'test1' as flower
union
select 'myGarden','test2'
union
select 'myGarden','test5'
union
select 'abeGarden','test4'
union
select 'abeGarden','test5'
union
select 'martinGarden', 'test2'
)
select* from temp
pivot
(
max(flower)
for flower in (test1,test2,test3,test4,test5)
) PivotTable
Вы также можете сделать значения в предложении in
динамическими. Так как это CTE, я не могу в моем примере.