【问题标题】:Distinct records by column value按列值区分记录
【发布时间】:2016-01-07 16:24:08
【问题描述】:

假设我有一个查询,它的输出是给定的表:

Number    Data   Info
123    data1   info1
456    data2   info2
789    data3   info3
123    data4   info4

我想获得与列相同的表, 但没有记录他们的 Number 列被获取(不是最好的措辞,抱歉)。 所以它就像一个独特的。

对我来说,我在结果中保留的编号为哪条记录并不重要。

所以我正在寻找的输出是:

 Number    Data   Info
    123    data1   info1
    456    data2   info2
    789    data3   info3

我正在使用 oracle sql。

提前致谢!

【问题讨论】:

    标签: sql oracle distinct


    【解决方案1】:

    您可以将聚合函数从 MAX 更改为其他函数以获得不同的 Data 和 Info 值

    SELECT Number, Max(Data) AS Data, Max(Info) as Info
    FROM Table
    GROUP BY Number
    

    FIRST() 可能对您有意义。这是关于聚合函数的 oracle 文档: https://docs.oracle.com/database/121/SQLRF/functions003.htm#SQLRF20035

    【讨论】:

      【解决方案2】:

      GROUPING 会为您获取MAX()MIN().. 但如果您想要整行,则必须使用以下分析方法。它为每个 NUMBER 生成一个序列。当有 2 个相同值的 NUMBER 时,它生成 seq, 1 ..2

      因此,通过始终选择 1,您将得到您想要的。必须明确提供要选择的行的优先级。

      SELECT NUMBER,DATA,INFO
      FROM
      (
         SELECT NUMBER,DATA,INFO,ROW_NUMBER() OVER(PARTITION BY  NUMBER ORDER BY <ordering column>) identifier
         FROM YOUR_TABLE
      )
      WHERE identifier = 1
      

      【讨论】:

        猜你喜欢
        • 2016-11-13
        • 1970-01-01
        • 2016-10-14
        • 2020-11-13
        • 2013-11-21
        • 2022-01-22
        • 2019-06-17
        • 2016-05-19
        • 1970-01-01
        相关资源
        最近更新 更多