Создать столбец и заполнить его определенным значением, если выполняется другое условие в другой таблице? - PullRequest
0 голосов
/ 16 октября 2019

Мне нужно написать запрос, который извлекает название компании, первую строку адреса улицы, город и столбец с именем Address_Type со значением «Billing» для клиентов, у которых тип адреса в таблице SalesLT.CustomerAddress равен 'Главный офис '.

У меня есть таблица с именем Sa.customer, в которой есть информация о клиенте, такая как имя, фамилия, адрес и т. Д., И другая таблица с именем SalesLT.CustomerAddress, в которой есть идентификатор клиента, идентификатор адреса, тип_адресаи т. д. В моем запросе я должен создать новый столбец с именем «Тип адреса» со значением «Оплата», если встречается тип адреса условия в SalesLT.CustomerAddress table = 'Main Office'.

У меня естьобъединили несколько таблиц, где это необходимо, и применили фильтр с помощью команды WHERE. Это должен быть сложный запрос, т.е. я должен заполнить пробел командой, и я не могу добавить или изменить код между двумя строками.

SELECT CompanyName, AddressLine1, City, ___ AS Address_Type
FROM SalesLT.Customer AS c
JOIN SalesLT.CustomerAddress AS ca  
  ON c.Customer_ID = ca.Customer_ID  ###-- join based on Customer_ID   
FROM SalesLT.Address AS a       ### -- join another table  
  ON a.Address_ID = ca.Address_ID   ###-- join based on AddressID
WHERE AddressType = 'Main Office'; ###-- filter for where the correct AddressType

1 Ответ

1 голос
/ 16 октября 2019

Вы можете использовать оператор SQL Server CASE для создания значения для вашего столбца [Address Type], протестировав значение поля SalesLT.CustomerAddress для этого набора результатов:

SELECT ...,
  CASE 
    WHEN SalesLT.CustomerAddress LIKE 'Main Office' THEN 'BILLING'
    ELSE ''
  END AS [Address Type],
  ...
FROM ...
WHERE ...

Однако вывероятно, обнаружит, что существует больше способов написания основного офиса, чем вы думаете, если вы имеете дело с данными, введенными пользователем! Я бы также рекомендовал TRIM() в поле CustomerAddress в операторе CASE.

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