列值

时间:2016-01-07 16:24:08

标签: sql oracle distinct

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

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

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

对我而言,哪个记录与我在结果中保留的数字无关紧要。

所以我要找的输出是:

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

我正在使用oracle sql。

提前致谢!

2 个答案:

答案 0 :(得分:2)

您可以将聚合函数从MAX更改为其他函数,以获取数据和信息的不同值

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

答案 1 :(得分: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