У меня есть строки в базе данных контактной информации, которые выглядят следующим образом:
contactID - bioID - AddressLine1 - City
393 1 1 nowhere st toronto
3921 1 2 somewhere st vancouver
3231 2 1 anywhere rd barrie
1122 2 2 overthere st halifax
В настоящее время я выполняю внутреннее соединение с таблицей биографии со столбцами имя, фамилия
и т. д., и результаты выглядят так: это:
bioid firstname lastname addressline1 city
1 some guy 1 nowhere st toronto
1 some guy 2 somewhere st vancouver
2 that girl 1 anywhere rd barrie
2 that girl 2 overthere st halifax
Таким образом, я в основном получаю 2 строки для каждой биографии. В любом случае, я могу выбрать все это как одну строку, например:
bioid firstname lastname addressline1x1 cityx1 addressline1x2 cityx2
1 some guy 1 nowhere st toronto 2 somewhere st vancouver
2 that girl 1 anywhere rd barrie 2 overthere st halifax
Любая помощь приветствуется.
Спасибо, Томас
РЕДАКТИРОВАТЬ:
Большое спасибо Денису и Джастину, я смог решить эту проблему. Однако сейчас у меня другой.
Я хотел бы на самом деле выбрать адреса как 1 поле, например:
bioid firstname lastname primary address secondary address
1 some guy 1 nowhere st, toronto 2 somewhere st, vanvouver
2 that girl 1 anywhere rd, barrie 2 overthere st, halifax
Я знаю, что могу сделать это, объединив столбцы, например:
cd1.addressline1 + ', ' cd1.city AS 'Primary Address'
Однако некоторые поля в записях пусты, например, если есть нет вторичного адреса - так как я могу сделать так, чтобы вторичный адрес не выводил ', '? Поля представляют собой пустые строки, а не значения NULL.
Еще раз спасибо!
РЕДАКТИРОВАТЬ: у меня это работает, используя:
STUFF(COALESCE(', ' + NULLIF(C1.[AddressLine1], ''), '') +
COALESCE(', ' + NULLIF(C1.[AddressLine2], ''), '') +
COALESCE(', ' + NULLIF(C1.[City], ''), '') +
COALESCE(', ' + NULLIF(C1.[State], ''), '') +
COALESCE(', ' + NULLIF(C1.[Country], ''), '') +
COALESCE(', ' + NULLIF(C1.[ZipCode], ''), ''),1, 1, '') AS 'Primary Address'