相同的值只显示一个,怎么做?

时间:2013-10-15 17:12:34

标签: sql oracle

你好我需要只显示一个相同的列值,但是每个其他列值显示给下一行。 例如,我有表Person(iD,姓名,姓氏)和联系人(iD,描述,联系人),一个人有树联系人。 我该怎么做这个报告?

iD     Name     Surname    Description    Contact
5      Johny    Walker     Email          Johny.Walke@xzy.zz
                           Mobile         6546846168
                           Fax            688468

1 个答案:

答案 0 :(得分:1)

理论上,类似以下构造的东西应该在8.1.6或更高版本中起作用:

select
  case r when 1 then p.id end as id,
  case r when 1 then name end as name,
  case r when 1 then surname end as surname,
  description,
  contact
from
  person p, (
    select
      id,
      row_number() over (partition by id) as r,
      description,
      contact
    from
      contact
  ) c
where p.id = c.id;

但你应该在窗口函数中添加排序,并在结果中添加一个顺序,以强制输出始终保持正确的顺序。