Я хотел бы использовать сводный SQL-запрос для построения таблицы результатов, в которой текст конкатенации возникает в разделе DATA сводной таблицы.Sql PIVOT и агрегат конкатенации строк
т.е. у меня есть следующий результат с помощью простого выбора:
+------------+-----------------+---------------+ | Event Name | Resource Type | Resource Name | +------------+-----------------+---------------+ | Event 1 | Resource Type 1 | Resource 1 | | Event 1 | Resource Type 1 | Resource 2 | | Event 1 | Resource Type 2 | Resource 3 | | Event 1 | Resource Type 2 | Resource 4 | | Event 1 | Resource Type 3 | Resource 5 | | Event 1 | Resource Type 3 | Resource 6 | | Event 1 | Resource Type 3 | Resource 7 | | Event 1 | Resource Type 4 | Resource 8 | | Event 2 | Resource Type 5 | Resource 1 | | Event 2 | Resource Type 2 | Resource 3 | | Event 2 | Resource Type 3 | Resource 11 | | Event 2 | Resource Type 3 | Resource 12 | | Event 2 | Resource Type 3 | Resource 13 | | Event 2 | Resource Type 4 | Resource 14 | | Event 2 | Resource Type 5 | Resource 9 | | Event 2 | Resource Type 5 | Resource 16 | +------------+-----------------+---------------+
И я хотел бы построить результат запроса, который будет выглядеть следующим образом:
+---------------------+------------------------+------------------------+---------------------------------------+-----------------+-------------------------------------+ | Event/Resource Type | Resource Type 1 | Resource Type 2 | Resource Type 3 | Resource Type 4 | Resource Type 5 | +---------------------+------------------------+------------------------+---------------------------------------+-----------------+-------------------------------------+ | Event 1 | Resource 1, Resource 2 | Resource 3, Resource 4 | Resource 5, Resource 6, Resource 7 | Resource 8 | NULL | | Event 2 | NULL | Resource 3 | Resource 11, Resource 12, Resource 13 | Resource 14 | Resource 1, Resource 9, Resource 16 | +---------------------+------------------------+------------------------+---------------------------------------+-----------------+-------------------------------------+
Я знаю, как использовать оператор PIVOT в ms-sql, но я не знаю, как агрегировать имя ресурса в конкатенацию разделенных запятыми элементов для каждого типа ресурса.
P.S Я также мог бы использовать решение с использованием Martix, предоставляемого SSRS 2008-R2, с использованием Report Builde 3 с первой таблицей в качестве моего набора данных и создания матрицы, которая будет агрегировать имена ресурсов в строку, разделенную запятой.
http://stackoverflow.com/questions/10294846/combine-two-tables-in-one-sql См. Этот ответ re: FOR XML PATH – Paul
Доступна функция агрегации CLR Concate, которую вы можете добавить в свою базу данных. Я считаю, что вы могли бы сделать поворот легко сделать это, так как вы просто используете регулярную точку опоры, но вместо того, чтобы использовать совокупный SUM/MAX/и т. Д. вы должны использовать агрегатную функцию Concatenate. Здесь приведен пример совокупной конкатенации, в Интернете есть другие: http://msdn.microsoft.com/en-us/library/ms182741.aspx Это действительно полезная функция. – AaronLS
@AaronLS Спасибо .. это действительно мы полны, но, к сожалению, я не смог создать агрегаты, так как клиент может запускать только простые запросы выбора, и он никогда не получит разрешения на создание нового агрегата CLR. – Mortalus