Как выбрать один адрес из нескольких адресов с условным - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть такая таблица:

CustomerID | Address  | Address Type
100000001  | addressA | Mailing Address
100000001  | addressB | Registered Address
100000001  | Null.    | Office Address

У одного клиента может быть несколько адресов. Я хочу выбрать только один адрес с такой условной ситуацией:

  1. Если адрес офиса не нулевой, тогда я получу адрес из адреса офиса. Если адрес офиса нулевой, перейдите на номер 2.

  2. Проверьте, не является ли зарегистрированный адрес недействительным, тогда я получу адрес с зарегистрированного адреса.

Ответы [ 3 ]

1 голос
/ 09 апреля 2019
CREATE TABLE CUSTOMER (CUSTOMERID INT , ADDRESS VARCHAR(500) , ADDRESSTYPE VARCHAR(25));

INSERT INTO CUSTOMER VALUES (100000001,'ADDRESSA' ,'MAILING ADDRESS');
INSERT INTO CUSTOMER VALUES (100000001,'ADDRESSB',  'REGISTERED ADDRESS');
INSERT INTO CUSTOMER VALUES (100000001, NULL ,'OFFICE ADDRESS');

SELECT 
    ISNULL(
        (SELECT ADDRESS FROM CUSTOMER WHERE CUSTOMERID = 100000001 AND ADDRESSTYPE = 'OFFICE ADDRESS' ) ,
        (SELECT ADDRESS FROM CUSTOMER WHERE CUSTOMERID = 100000001 AND ADDRESSTYPE = 'REGISTERED ADDRESS' )
    ) 
1 голос
/ 09 апреля 2019

использовать TOP 1 с ORDER BY с условием

select top 1 *
from   address
where  CustomerID = @CustomerID
and    Address is not null
order by case when AddressType = 'Office' then 1
              when AddressType = 'Registered' then 2
              else 3
              end
0 голосов
/ 09 апреля 2019
select * from customer 

select  max(customerID) customerID ,max(Address) Address ,max(Addresstype) Addresstype
from customer  
where address is not null
group by customerID

Выход

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...