按字段选择不同的线条

时间:2015-05-28 22:55:09

标签: sql oracle11g oracle10g

我正在制作一个选择,它会返回一个像这样的表

Name      surname
Jhon          a
Jhon          b
Jhon          c
Joe           a
Joe           b
Joe           c

但我需要得到的只是Jhon的一次出现,以及其中一个姓氏的Joe之一。

我只能有一个Jhon有一个姓氏,一个Joe有一个姓氏。

我无法制作order by,因为我需要选择名字和姓氏。如果我使用不同的话,我将拥有所有的Jhons和Joes ..

你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用聚合:

select name, max(surname) as surname
from table t
group by name;

您还可以使用分析函数执行类似操作:

select t.name, t.surname
from (select t.*, row_number() over (partition by name order by name) as seqnum
      from table t
     ) t
where seqnum = 1;

如果您想从同一行获取多个列,这将非常有用。