我想使用数据透视 SQL 查询来构造一个结果表,其中连接文本作为数据透视表的 DATA 部分中的结果。
即我使用简单的选择得到以下结果:
+------------+-----------------+----------------+ | 活动名称 | 资源类型 | 资源名称 | +------------+-----------------+----------------+ | 活动 1 | 资源类型 1 | 资源 1 | | 活动 1 | 资源类型 1 | 资源 2 | | 活动 1 | 资源类型 2 | 资源 3 | | 活动 1 | 资源类型 2 | 资源 4 | | 活动 1 | 资源类型 3 | 资源 5 | | 活动 1 | 资源类型 3 | 资源 6 | | 活动 1 | 资源类型 3 | 资源 7 | | 活动 1 | 资源类型 4 | 资源 8 | | 活动二 | 资源类型 5 | 资源 1 | | 活动二 | 资源类型 2 | 资源 3 | | 活动二 | 资源类型 3 | 资源 11 | | 活动二 | 资源类型 3 | 资源 12 | | 活动二 | 资源类型 3 | 资源 13 | | 活动二 | 资源类型 4 | 资源 14 | | 活动二 | 资源类型 5 | 资源 9 | | 活动二 | 资源类型 5 | 资源 16 | +------------+-----------------+----------------+
我想构建一个如下所示的结果查询:
+---------------------+-------------+-- ----------------------+---------------------------- ------------+------------------+-------- ------------------+ | 事件/资源类型 | 资源类型 1 | 资源类型 2 | 资源类型 3 | 资源类型 4 | 资源类型 5 | +---------------------+-------------+-- ----------------------+---------------------------- ------------+------------------+-------- ------------------+ | 活动 1 | 资源 1、资源 2 | 资源 3,资源 4 | 资源 5、资源 6、资源 7 | 资源 8 | 空 | | 活动二 | 空 | 资源 3 | 资源 11、资源 12、资源 13 | 资源 14 | 资源 1、资源 9、资源 16 | +---------------------+-------------+-- ----------------------+---------------------------- ------------+------------------+-------- ------------------+
我知道如何在 ms-sql 中使用 PIVOT 语句,但我不知道如何将资源名称聚合为每种资源类型的逗号分隔项的串联。
PS 我还可以使用 SSRS 2008-R2 提供的 Martix 解决方案,使用 Report Builde 3 将第一个表作为我的数据集,并创建一个矩阵,将资源名称聚合为逗号分隔的字符串。