-1

同じ名前のレコードが複数ある、sites という Oracle テーブルがあります。例:

 Owner Name          Contact Name            Owner Address  Contact Address    
        A                  A                   XYZ                 SDF
        A                  D                   ABC                 JKL
        B                  E                   QWE                 YUR
        B                  F                   JKL                 SFD
        C                  C                   ZXC                 ASD  
        B                  G                   BNM                 SAD

SQL クエリが返されるはずです

A1           XYZ
A2           ABC
A3           SDF
B1           QWE
B2           JKL 
B3           BNM
C1           ZXC
C2           ASD
D            JKL
E            YUR
F            SFD
G            SAD

誰かがそのようなクエリを書くのを手伝ってくれませんか.理想的には、単一のレコードに数字の接尾辞を付けたくありませんが、それがクエリを簡素化するなら、それもできます.

4

2 に答える 2

4

union必要なものを作成するために使用できます。

with the_data as ( 
  select owner_name as name, owner_address as address
    from my_table
   union all
  select contact_name as name, contact_address as address
    from my_table
         )
select name 
        || case when count(*) over ( partition by name ) = 1 then ''
                else to_char(row_number() over ( partition by name 
                                                     order by address ))
           end
     , address
  from the_data

個別の住所のみが必要な場合は、連絡先の組み合わせをに変更union allunionます。これはSQLフィドル形式です。

于 2012-08-08T07:21:22.447 に答える