Как найти основной адрес - PullRequest
       1

Как найти основной адрес

0 голосов
/ 14 октября 2019

У меня есть таблица, в которой есть объекты, и эти объекты могут иметь несколько адресов. Адреса также имеют добавленную дату. Я хотел бы вернуть все строки адреса для данного объекта и отметить последний добавленный адрес как строку Primary и пометить оставшиеся строки как Not Primary.

Это то, с чем я работаю

select
A.ADDRESS_KEY
||','||
 e.PERSON_COMPANY_FLAG 
 ||','|| 
 e.ENTITY_KEY 
 ||','||
 Decode(a.ADDRESS_TYPE_KEY, '1', 'ADDR_OFFI', '2', 'ADDR_HOME', '3', 'ADDR_POBO', '4', 'ADDR_BUSI', '2212779', 'ADDR_TENN', '2212780', 'ADDR_OTHE', '2212781', 'ADDR_PYMT')
 ||','||
 a.date_added
 IS THIS THE PRIMARY ADDRESS Y OR N
  ||','||
  A.STREET
  --REPLACE(REPLACE(a.street, CHR(10), '  '), CHR(13), '  ')
  ||','||
  a.city
  ||','||
  rtrim(a.zip_code)
  ||','||
  a.state
  ||','||
  a.country
from
    oclp000.entity e
    join oclp000.address a on e.ENTITY_KEY = a.ENTITY_KEY
    join oclp000.addresstype at on a.ADDRESS_TYPE_KEY = at.ADDRESS_TYPE_KEY
where
  e.person_company_flag = 'C' 
  and e.entity_key = 5019139
  ;

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете использовать аналитическую функцию ROW_NUMBER(), чтобы определить, какая строка является последней добавленной, путем сортировки по порядку date_added в DESC. Первый из них будет основным.

SELECT 
  ... everything else ...
  , CASE 
       WHEN ROW_NUMBER() OVER ( PARTITION BY e.entity_key ORDER BY a.date_added DESC ) = 1 
       THEN 'Y' 
       ELSE 'N' END is_primary_address
FROM ... what you already had ...
WHERE ... what you already had ...

ОБНОВЛЕНИЕ: Объединение строк

Чтобы использовать это в объединенной строке, используйте || и пропустите псевдоним запятой и столбца ("is_primary_address") из SQL выше. Как это:

SELECT 
  ... other parts of string ... || ',' ||
  CASE 
       WHEN ROW_NUMBER() OVER ( PARTITION BY e.entity_key ORDER BY a.date_added DESC ) = 1 
       THEN 'Y' 
       ELSE 'N' END || ',' ||
  ... other parts of string ...
FROM ... what you already had ...
WHERE ... what you already had ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...