关于oracle SQL查询需要跳过一列中的重复值

时间:2016-06-10 09:10:02

标签: oracle

我的表格中有这样的数据:

CustID  CUSTName
10      Tony
10      Jony
10      Hony
20      Bot
20      Guly
20      Easter

我需要输出如下:

custID Custname
10     Tony
       Jony
       Hony
20     Bot
       Guly
       Easter

2 个答案:

答案 0 :(得分:1)

如果您使用的是SQL * Plus或SQL Developer,则可以使用内置的formatting options;在这种情况下with break

  

BREAK命令默认在您命名的列或表达式中禁止重复值。因此,要抑制ORDER BY子句中指定的列中的重复值,请以最简单的形式使用BREAK命令:

BREAK ON break_column

所以在你的情况下:

break on custid

select custid, custname
from your_table
order by custid;

这不是您通常希望在查询本身中执行的操作;这是关于客户端/报告/应用程序如何显示检索到的数据而不是查询它的方式。

答案 1 :(得分:0)

请尝试以下操作。

with src as
 (select 10 CustID, 'Tony' CUSTName
    from dual
  union all
  select 10, 'Jony'
    from dual
  union all
  select 10, 'Hony'
    from dual
  union all
  select 20, 'Bot'
    from dual
  union all
  select 20, 'Guly'
    from dual
  union all
  select 20, 'Easter'
    from dual)

select case
          when Rnum = 1 then
           Custid
       end CustId, CustName
  from (select row_number() over(partition by custid order by custid) Rnum,
                src. custId, Src. CustName
           from Src)

我在这里使用了row_number()分析函数