我的表格中有这样的数据:
CustID CUSTName
10 Tony
10 Jony
10 Hony
20 Bot
20 Guly
20 Easter
我需要输出如下:
custID Custname
10 Tony
Jony
Hony
20 Bot
Guly
Easter
答案 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()分析函数