如何在聚合字段中获取重复记录

康斯坦蒂

我准备了一个查询:

SELECT
building_custom."Location Code",
building_custom."RUD Site Name",
string_agg(concat_ws('-',subnet.range_begin,subnet.range_end),',')
FROM building
INNER JOIN building_custom ON building.building_pk=building_custom.building_fk
INNER JOIN device ON building.building_pk=device.building_fk
INNER JOIN ipaddress ON device.device_pk=ipaddress.device_fk
INNER JOIN subnet ON ipaddress.subnet_fk=subnet.subnet_pk
GROUP BY
building_custom."Location Code",
building_custom."RUD Site Name"

我得到的结果是:

DBA;BUENOS AIRES-ARENALES;141.167.161.17-141.167.161.18,10.120.10.1-10.120.10.30,10.120.11.1-10.120.11.254,141.167.161.25-141.167.161.30,10.120.16.1-10.120.16.254,10.120.10.1-10.120.10.30,10.120.16.1-10.120.16.254,10.120.11.1-10.120.11.254,0.0.0.1-255.255.255.254,141.167.161.25-141.167.161.30,141.167.161.25-141.167.161.30,10.120.11.1-10.120.11.254,10.120.16.1-10.120.16.254,141.167.161.21-141.167.161.22,0.0.0.1-255.255.255.254,10.120.10.1-10.120.10.30

最后一个字段(子网范围)包含重复值。

目标是获得如下结果:

DBA;BUENOS AIRES-ARENALES;0.0.0.1-255.255.255.254,10.120.10.1-10.120.10.30,10.120.11.1-10.120.11.254,10.120.16.1-10.120.16.254,141.167.161.17-141.167.161.18,141.167.161.21-141.167.161.22,141.167.161.25-141.167.161.30

起初我试图添加

DISTINCT ON (view_subnet_v1.range_begin)

但是后来我需要在 GROUP BY 中添加它,结果更糟:

DBA;BUENOS AIRES-ARENALES;0.0.0.1-255.255.255.254,0.0.0.1-255.255.255.254
DBA;BUENOS AIRES-ARENALES;10.120.10.1-10.120.10.30,10.120.10.1-10.120.10.30,10.120.10.1-10.120.10.30
DBA;BUENOS AIRES-ARENALES;10.120.11.1-10.120.11.254,10.120.11.1-10.120.11.254,10.120.11.1-10.120.11.254
DBA;BUENOS AIRES-ARENALES;10.120.16.1-10.120.16.254,10.120.16.1-10.120.16.254,10.120.16.1-10.120.16.254
DBA;BUENOS AIRES-ARENALES;141.167.161.17-141.167.161.18
DBA;BUENOS AIRES-ARENALES;141.167.161.21-141.167.161.22
DBA;BUENOS AIRES-ARENALES;141.167.161.25-141.167.161.30,141.167.161.25-141.167.161.30,141.167.161.25-141.167.161.30
漂白

您可以尝试在内部查询中使用 distinct :

 SELECT
    "Location Code",
    "RUD Site Name" ,
    string_agg(concat_ws('-',range_begin,range_end),',') from 
    (SELECT distinct 
    building_custom."Location Code",
    building_custom."RUD Site Name",
    subnet.range_begin
    ,subnet.range_end
    FROM building
    INNER JOIN building_custom ON building.building_pk=building_custom.building_fk
    INNER JOIN device ON building.building_pk=device.building_fk
    INNER JOIN ipaddress ON device.device_pk=ipaddress.device_fk
    INNER JOIN subnet ON ipaddress.subnet_fk=subnet.subnet_pk
) inner_q
    GROUP BY
    "Location Code",
    "RUD Site Name"

另外,如果你想有只可能使用最广泛的子网minmaxgroup by不是distinct在你的内心查询

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在mysql中隐藏重复记录?

来自分类Dev

如何在Django中处理重复记录

来自分类Dev

获取重复记录

来自分类Dev

获取Django queryset中的重复记录

来自分类Dev

从 SQL 查询中获取重复记录

来自分类Dev

如何防止Rails中的重复记录

来自分类Dev

如何删除SQL中的重复记录?

来自分类Dev

从PHP中的重复记录中获取特定数据

来自分类Dev

从PHP中的重复记录中获取特定数据

来自分类Dev

如何使用 SUM 函数从 SQL Server 中获取重复记录的总数

来自分类Dev

Javascript:如何获取多个重复记录的唯一ID

来自分类Dev

获取重复记录中的任何一项

来自分类Dev

获取重复记录中的任何一项

来自分类Dev

在Azure DocumentDB的选择查询中获取重复记录

来自分类Dev

如何在mysql中更新所有重复记录的列?

来自分类Dev

如何在CRM 2013中创建(预验证)插件上检测重复记录

来自分类Dev

如何在Excel-2010中删除非重复记录

来自分类Dev

如何在显示时从同一表中删除重复记录

来自分类Dev

如何在不同表中没有重复记录的情况下进行休眠保存

来自分类Dev

SQL中的重复记录

来自分类Dev

从多列组合表中获取重复记录,对于重复记录显示“ Y”,对于单个记录显示“ N”

来自分类Dev

如何防止书签表中Rails中的重复记录?

来自分类Dev

根据数量字段重复记录

来自分类Dev

摆脱重复记录和计算字段

来自分类Dev

如何处理SQL中的重复记录?

来自分类Dev

如何最好避免在CakePHP中插入重复记录?

来自分类Dev

如何快速删除mysql中的重复记录

来自分类Dev

SAS如何对重复记录中的变量求和

来自分类Dev

如何处理SQL中的重复记录?

Related 相关文章

热门标签

归档