【发布时间】:2013-06-20 21:01:43
【问题描述】:
我有一个包含如下列的表:
USERID、USERTYPE、DIVISION、SUBDIVISION
对于每个用户 ID,将有一个或多个用户类型(例如,一个用户可以是开发人员或管理员或两者兼而有之)。根据用户类型,用户可以订阅部门和可选的子部门。
USERID、USERTYPE 和 DIVISION 不是空列。
需要以下格式的输出 -
- USERID、USERTYPE、DIVISION1、DIVISION2、DIVISION3 ..等
所以,USERID-USERTYPE的组合应该有唯一的记录。 为此,我使用了工作正常的 PIVOT 运算符。我还创建了一个临时表(比如说 Table1)来存储这个查询的结果。
- 现在,如果用户订阅了细分,则细分的值应作为逗号分隔值写入该细分下。如果未订阅细分,则简单的细分将出现在其各自的列下。
我使用 LISTAGG 函数编写了一个查询,它为每个 USERID-USERTYPE 组合提供了逗号分隔的细分。该查询的结果存储在表 2 中。
现在,当我在 USERID 和 USERTYPE 上加入表 Table1 和 Table2 时,我会为单个 USERID-USERTYPE 组合获得多行,这很明显,但不是必需的。
以下是一些示例数据:
请注意 USERID = 3 的记录。
我得到的是“连接查询的结果”,而我需要的是“最终结果”。
另外,我不能在枢轴查询之前使用 LISTAGG,因为稍后在构建枢轴查询时,列出所有可能的细分组合太乏味了。
我确定我在这里遗漏了一些小点,但不知道是什么。
任何建议或指示都会有很大帮助。
提前致谢。
【问题讨论】: