2016-11-22 5 views
1

У меня есть таблица со столбцами, как:Динамический стержень в SQL Server 2014

ProductID ProductName ProductCategory Storage 
1   Doll  Toy    A1 
2   Car   Toy    A2 
3   Cola  Drink   A1 
4   Pure Water Drink   A3 

Я хочу таблицу вывода в этом формате:

Storage Toy Drink 
A1  1 1 
A2  1 0 
A3  0 1 

Пожалуйста, помогите мне, как я должен решить эту проблему. Большое спасибо.

ответ

1

Используйте динамический SQL-запрос с STUFF.

Запрос

declare @sql as varchar(max); 
select @sql = 'select [Storage], ' 
       + stuff((select distinct ', sum(case [ProductCategory] 
       when ''' + [ProductCategory] + ''' 
       then 1 else 0 end) as ' + [ProductCategory] 
       from [your_table_table] 
       for xml path('') 
       ), 1, 2, '') 
       +' from [your_table_table] group by [Storage]'; 

exec(@sql); 
+0

Большое спасибо. Он работает отлично. Еще один вопрос: может ли выход иметь процент? (например, А1 50% 50%, А2 50% 0%, А3 0% 50%) – Danie

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