【问题标题】:SQL:Display distinct ids for all the set of values from tableSQL:显示表中所有值集的不同ID
【发布时间】:2019-12-04 07:29:29
【问题描述】:

我有一个问题,在执行查询后我得到这样的结果

DevID   Difference      
-----------------
99       5        
99       10   
99       5        
99       4 
12       8        
12       9 
12       5        
12       6 

我不想要重复的 ID, 我应该只能显示一个 ID。 这可以通过使用 distinct 轻松实现,但问题是我还需要显示差异列。我不介意哪个值出现在 diff 中,但 99 的任何一个值都可以出现,但基本上我只需要一个 id 值。 预期的结果是这样的。

DevID   Difference      
-----------------
99       5        
12       8  

如果它有帮助这个问题是以下问题的延续 Difference of values that belong to same group but stored in two rows

【问题讨论】:

  • 但是如果你不关心价值,为什么你需要差异呢?

标签: sql sql-server data-analysis


【解决方案1】:

您可以将GROUP BYMAXMIN 或任何其他聚合函数一起使用,以获得您预期的结果。

SELECT DevID, MAX(Difference) 
FROM Yourtablename
GROUP BY DevID

【讨论】:

    【解决方案2】:

    使用聚合函数max()

    select DevID, max(Difference) 
    from tableA
    group by DevID
    

    【讨论】:

      【解决方案3】:

      请尝试此示例,您需要在实际查询中更改此查询。

      注意:例如,根据您的预期输出,我已经准备好了。

      DECLARE @Table TABLE
      (
          DevID   INT,
          [Difference]     INT
      );
      
      INSERT INTO @Table VALUES
      (99,5),(99,10 ),(99,5),(99,4),(12,8),(12,9),(12,5),(12,6)
      
      --SELECT * FROM @Table
      SELECT * FROM
      (
          SELECT DevID,[Difference],
          ROW_NUMBER() OVER(PARTITION BY DevID  ORDER BY DevID) AS RN 
          FROM @Table 
      ) AS Data
      WHERE RN=1
      ORDER BY [Difference]
      

      输出

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-05
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        相关资源
        最近更新 更多