2016-02-01 2 views
0

Я использую oracle 11g. может кто-нибудь, пожалуйста, скажите мне, кто я могу получить только одну строку для каждого уникального идентификатора клиента/идентификатора партнера в выводе.одна строка для каждого уникального идентификатора клиента/идентификатора партнера

Входные данные из таблицы оракула:

  • CUSTOMERID филиал ID адрес государственного типа телефона

    42084 100 123 Уолтона иль хй бизнес

    42085 101 124 Уолтона ак ого личного

    42084 100 83 nw st ny xx business

    42086 102 84 SW пу ого внутр

    42084 100 123 Walton IL ого бизнес

    42086 100 123 Walton IL ого бизнес

    82084 100 123 Walton ил хх бизнес

    42084 101 124 Walton ак хх личный

    42085 100 123 Уолтон иль хх бизнес

    42084 103 83 nwst пу хх вкл

    42087 103 83 NW ST NY хх вкл

Ожидаемый результат:

клиент типа ID идентификатор партнера адрес состояния телефона

42084 100 123 Уолтон иль хх бизнес

42084 101 124 walton ak xx personal

42084 103 83 nwst ny xx inc

42085 101 124 Walton ак ого персональный

42085 100 123 Walton IL ого бизнес

42086 102 84 SW пу ого внутр

42086 100 123 Walton илы хх бизнес

42087 103 83 nwst ny xx inc

+0

ли вы попробовать использовать DISTINCT положение? –

+0

Я пробовал отличные, до сих пор работающие на меня. потому что я нахожусь в oracle 11g, я также пытаюсь использовать rownumber() над partion by или listagg. теперь уверен, что если wm_concat по-прежнему поддерживается oracle – pavan

ответ

0

Просто используйте
SELECT DISTINCT CustomerID, AffiliateID FROM [TableName]

Это вернет значения, в которых уникальная комбинация (CustomerID, AffiliateID) уникальна. Если вам необходимо включить другие поля в вашем результате вы можете пойти с этим:

SELECT * 
FROM [TableName] 
GROUP BY CONCAT(CustomerID, AffiliateID); 
2

вы хотите использовать раздел, на CustomerID и AffiliateID колонке , как это ...

select * from (select customerID,affiliateid,address,state,phone,type, 
       row_number() over(partition by CustomerID,AffiliateID 
          order by CustomerID,AffiliateID) r from xyzz) 
where r=1 

здесь

select * from (select customerID,affiliateid,address,state,phone,type, 
        row_number() over(partition by CustomerID,AffiliateID 
           order by CustomerID,AffiliateID) r from xyzz) 

этот запрос возвращает все строки с номером строки, раздела по CustomerID и AffiliateID

как this..r-это номер строки

CustomerID  AffiliateID  add  state  phone r 

    10    456    xyz   xx   00  1 
    10    456    xyz   xx   00  2 
    10    456    xyz   xx   00  3 
    10    123    xyz   xx   00  1 
    20    456    xyz   xx   00  1 
    20    789    xyz   xx   00  1 
    20    789    xyz   xx   00  2 
    30    789    xyz   xx   00  1` 

установить номер строки для всего столбца

where r=1 

где положение возвращает строки, который установлен в 1 и устранить дублирующие строки

+0

Спасибо. работает на меня – pavan