我有一个表,其列如下:
USERID、USERTYPE、DIVISION、SUBDIVISION
对于每个用户标识,将有一个或多个用户类型(例如,用户可以是开发人员或管理员或两者兼而有之)。根据用户类型,用户可以订阅部门和可选的子部门。
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,因为稍后在构建枢轴查询时,列出所有可能的细分组合太乏味了。
我确定我在这里遗漏了一些小点,但无法弄清楚是什么。
任何建议或指示都会有很大帮助。
提前致谢。