SQL 获取不重复的列表
SQL get list without duplicates
我正在使用 Tableau 显示来自我认为使用 PostgreSQL 的 Amazon Redshift Server 的数据。
我有一个 table 看起来像:
ID | Source | Target
proj1 | proj1 | proj2
proj1 | proj2 | proj1
proj1 | proj3 | proj2
proj2 | proj1 | proj2
proj2 | proj2 | proj1
proj2 | proj3 | proj2
我目前正在使用 listagg 将目标列合并到每个项目的列表中,但 运行 合并到每个显示重复项和自身的项目中。
我的代码是:
Select ID,
listagg(Target) As Tools
From Table
Group by ID
如何从列表中删除重复的 and/or 原始 ID?
一种适用于任何数据库的方法是进行两个级别的聚合,一个是删除重复的目标,另一个是按 ID 生成 CSV 目标列表:
SELECT
ID,
concat_func(Target) AS Tools -- replace "concat_func" with whatever
FROM -- be appropriate for your database
(
SELECT ID, Target
FROM yourTable
GROUP BY ID, Target
) t
GROUP BY
ID;
我正在使用 Tableau 显示来自我认为使用 PostgreSQL 的 Amazon Redshift Server 的数据。
我有一个 table 看起来像:
ID | Source | Target
proj1 | proj1 | proj2
proj1 | proj2 | proj1
proj1 | proj3 | proj2
proj2 | proj1 | proj2
proj2 | proj2 | proj1
proj2 | proj3 | proj2
我目前正在使用 listagg 将目标列合并到每个项目的列表中,但 运行 合并到每个显示重复项和自身的项目中。
我的代码是:
Select ID,
listagg(Target) As Tools
From Table
Group by ID
如何从列表中删除重复的 and/or 原始 ID?
一种适用于任何数据库的方法是进行两个级别的聚合,一个是删除重复的目标,另一个是按 ID 生成 CSV 目标列表:
SELECT
ID,
concat_func(Target) AS Tools -- replace "concat_func" with whatever
FROM -- be appropriate for your database
(
SELECT ID, Target
FROM yourTable
GROUP BY ID, Target
) t
GROUP BY
ID;