【问题标题】:How can I hide duplicate data?如何隐藏重复数据?
【发布时间】:2016-01-17 12:39:53
【问题描述】:

我试图隐藏多行中的重复数据,这是我当前的代码,我提供了输出图像,我需要在 LOGINID、EMAIL 和 USERGROUP 列中重复显示一次。另外,如何将“ROLE”列中的数据放入“USERGROUP”列?所以它看起来像最后一张图片?我正在使用 SQL Server Management Studio。任何帮助将不胜感激。

SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
                CASE WHEN HOST0140.EMAIL = HOST0149.LOGINID THEN NULL
                     ELSE LTRIM(RTRIM(HOST0140.EMAIL)) END AS EMAIL,
                LTRIM(RTRIM(HOST0149.USERKEY)) AS USERGROUP, 
                LTRIM(RTRIM(HOST0150.ROLE)) AS ROLE
FROM HOST0149
  LEFT JOIN HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY
  LEFT JOIN HOST0151 ON HOST0140.PERSONKEY = HOST0151.PERSONKEY
  LEFT JOIN HOST0150 ON HOST0151.ROLEKEY = HOST0150.ROLEKEY
ORDER By LOGINID

【问题讨论】:

  • 您的示例输入图像和输出图像不匹配,请发布没有图像的实际数据或创建 SQL 小提琴

标签: sql sql-server select stored-procedures duplicates


【解决方案1】:

你的问题有点不清楚,但我认为你想连接重复的行,而不是从数据库中删除它们。

假设这是正确的,您可以使用 xml 功能来执行此操作(请参阅:Concatenate many rows into a single text string?

Select distinct LOGINID, 
                EMAIL
        (
            Select HOST0150.ROLE + char(13)+char(10) + AS [text()]
            From HOST0150
            Where HOST0151.ROLEKEY = HOST0150.ROLEKEY
            ORDER BY HOST0150.ROLEKEY
            For XML PATH ('')
        ) [roles]
    FROM HOST0149
LEFT JOIN HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY
LEFT JOIN HOST0151 ON HOST0140.PERSONKEY = HOST0151.PERSONKEY
LEFT JOIN HOST0150 ON HOST0151.ROLEKEY = HOST0150.ROLEKEY
ORDER By LOGINID

【讨论】:

    【解决方案2】:

    通过导出功能将您的文件导出到 excel 中,然后简单地替换数据或添加检查重复数据删除该行的位置.. 对不起我的英语

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2011-01-14
      • 2010-10-07
      相关资源
      最近更新 更多