连接其他列值时删除重复项

问我

我的数据表如下(表1)

            Table1
            ------------------------------------------
            ID  | IPaddress     | Port  | Value
            ----|---------------|-------|-------------      
            1   | xx.yy.14.15   | 332   | This is good
            ------------------------------------------      
            2   | xx.yy.14.15   | 332   | I can work
            ------------------------------------------
            3   | xx.yy.12.12   | 400   | Looks ok
            ------------------------------------------
            4   | xx.yy.12.12   | 400   | can I work
            ------------------------------------------
            5   | xx.yy.12.12   | 400   | Yes, please
            -------------------------------------------
            6   | xx.yy.14.16   | 401   | How is this
            -------------------------------------------
            7   | xx.yy.14.16   | 401   | Looks ok
            -------------------------------------------
            8   | xx.yy.14.16   | 401   | can I work
            -------------------------------------------
            9   | xx.yy.14.16   | 401   | Yes, please
            -------------------------------------------

所需的结果表:

            ID  | IPaddress     | Port  | Value
            ----|---------------|-------|-----------------------------------------------------------        
            1   | xx.yy.14.15   | 332   | This is good and I can work
            --------------------------------------------------------------------------------------      
            2   | xx.yy.12.12   | 400   | Looks ok and can I work and Yes, please
            ---------------------------------------------------------------------------------------
            3   | xx.yy.14.16   | 401   | How is this and Looks ok and can I work and Yes, please
            ---------------------------------------------------------------------------------------

这是我尝试过的:

            DECLARE @VAR1 VARCHAR(50)
            DECLARE @VAR2 VARCHAR(50)

            SELECT @VAR1 = T1.VALUE,@VAR2=T2.VALUE
            FROM TABLE1 AS T1 INNER JOIN TABLE1 AS T2 ON T1.ID =T2.ID
            WHERE T1.IPADDRESS =T2.IPADDRESS

            SELECT IPADDRSS,PORT,@VAR1 + ' AND ' +@VAR2 FROM
              SELECT T1.*,
              ROW_NUMBER() OVER (PARTITION BY T1.IPADDRESS,T1.PORT ORDER BY VALUE) AS NM
              FROM TABLE1 AS T1
              )TBL
            WHERE NM = 1

但是,从上面的查询中,如果只有 2 个重复行,我能够实现所需的输出(注意:这里我将 IPADDRESS 和 PORT 视为重复,而其他列不重复)

但是,当 3 行或 4 行或 5 行中有相同的 IPADDRESS 和 PORT 时,如何实现我想要的结果?请注意,具有相同 IPADDRESS 和 PORT 的行数是动态的,有时可能会超过 10。那么,如何在获得理想结果的同时处理这种动态情况?

希望我正确解释了这一点。请帮忙。谢谢

菲利普·凯利

刚刚看到您的评论:SQL 2017。应该提前说过,我一直在研究一种让我感到悲伤的老式聚合技术。SQL 2017 为我们提供了早就应该使用的 string_agg 函数,这使它变得非常简单:

SELECT
   row_number() over (order by IPaddress, Port) ID
  ,IPaddress
  ,Port
  ,string_agg(Value, ' and ')
 from Table1
 group by 
   IPaddress
  ,Port

如果订购很重要,您可能需要稍微研究一下。

@KeithL 的版本也可以,只需进行一些调试……我看到您刚刚解决了这个问题。我,我只是不太喜欢 XML,这就是我研究替代方案的原因。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据其他列中的值删除重复项

来自分类Dev

根据其他列值删除重复项(Python)

来自分类Dev

R删除其他列中的重复项

来自分类Dev

如果特定列中有重复项,而其他列必须不同,则从DF中删除观测值

来自分类Dev

如果特定列中有重复项,而其他列必须不同,则从DF中删除观测值

来自分类Dev

熊猫,根据其他列的值删除重复的行

来自分类Dev

根据其他列值的存在删除重复的行

来自分类Dev

如何删除SQL表中的重复项并连接其他部分

来自分类Dev

mysql按A列搜索重复项并按其他列的条件删除

来自分类Dev

遍历多维数组并删除重复项并合并其他值

来自分类Dev

根据特定列值删除重复项

来自分类Dev

删除重复项后替换列值

来自分类Dev

删除重复行的列值为零的重复项

来自分类Dev

根据其他行中的重复项创建新列

来自分类Dev

使用pandas.Series.explode()时重复其他列值

来自分类Dev

删除一列中具有重复值但其他列中具有不同值的行

来自分类Dev

删除一列中具有重复值但其他列中具有不同值的行

来自分类Dev

过滤列以仅显示有值时,并删除R中的其他值(R,dplyr,lubridate)

来自分类Dev

值为as的列连接其他列的值

来自分类Dev

Oracle:SUM列仅重复其他列的值

来自分类Dev

将sql数据透视表与其他表中的列连接时出现重复数据

来自分类Dev

根据另一列的值删除重复项

来自分类Dev

如何按日期对值排序并按列删除重复项?

来自分类Dev

根据列值删除行中的重复项

来自分类Dev

如果单独列中的值不同,则删除重复项

来自分类Dev

分组值并根据Pandas中的列删除分组的重复项

来自分类Dev

熊猫-根据特定列中的值删除重复项

来自分类Dev

根据列值删除数组中的重复项

来自分类Dev

基于多个列值删除表中的重复项

Related 相关文章

  1. 1

    根据其他列中的值删除重复项

  2. 2

    根据其他列值删除重复项(Python)

  3. 3

    R删除其他列中的重复项

  4. 4

    如果特定列中有重复项,而其他列必须不同,则从DF中删除观测值

  5. 5

    如果特定列中有重复项,而其他列必须不同,则从DF中删除观测值

  6. 6

    熊猫,根据其他列的值删除重复的行

  7. 7

    根据其他列值的存在删除重复的行

  8. 8

    如何删除SQL表中的重复项并连接其他部分

  9. 9

    mysql按A列搜索重复项并按其他列的条件删除

  10. 10

    遍历多维数组并删除重复项并合并其他值

  11. 11

    根据特定列值删除重复项

  12. 12

    删除重复项后替换列值

  13. 13

    删除重复行的列值为零的重复项

  14. 14

    根据其他行中的重复项创建新列

  15. 15

    使用pandas.Series.explode()时重复其他列值

  16. 16

    删除一列中具有重复值但其他列中具有不同值的行

  17. 17

    删除一列中具有重复值但其他列中具有不同值的行

  18. 18

    过滤列以仅显示有值时,并删除R中的其他值(R,dplyr,lubridate)

  19. 19

    值为as的列连接其他列的值

  20. 20

    Oracle:SUM列仅重复其他列的值

  21. 21

    将sql数据透视表与其他表中的列连接时出现重复数据

  22. 22

    根据另一列的值删除重复项

  23. 23

    如何按日期对值排序并按列删除重复项?

  24. 24

    根据列值删除行中的重复项

  25. 25

    如果单独列中的值不同,则删除重复项

  26. 26

    分组值并根据Pandas中的列删除分组的重复项

  27. 27

    熊猫-根据特定列中的值删除重复项

  28. 28

    根据列值删除数组中的重复项

  29. 29

    基于多个列值删除表中的重复项

热门标签

归档