Как выбрать только первую запись с каждым внешним ключом в SQL Server?

У меня есть строки в базе данных контактной информации, которые выглядят следующим образом:

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'
5
задан tsdexter 18 March 2012 в 22:22
поделиться