/ / Eu tenho uma consulta sql que extrai dados, no entanto, cada pessoa pode ter muitos números que produz várias linhas para cada pessoa, preciso de 1 linha por pessoa - sql, sql-server

Eu tenho uma consulta SQL que puxa dados, no entanto, cada pessoa pode ter muitos números que produz várias linhas para cada pessoa, eu preciso de 1 linha por pessoa - sql, sql-server

Exemplo

minha consulta produziria duas linhas para bob com oúnica diferença é o número de telefone. no entanto, a tabela na qual eu recebo os números de telefone tem uma identificação de tipo de telefone. por exemplo, a primeira linha para bob o ID do tipo de telefone seria 1 e a segunda linha seria 2. Preciso dos dois na mesma linha

Presumi que precisaria fazer uma subconsulta para cada tipo de identificação de telefone ... mas isso não parece estar funcionando. Eu continuo voltando

A subconsulta retornou mais de 1 valor. Isso não é permitido quando a subconsulta segue =,! =, <, <=,>,> = Ou quando a subconsulta é usada como uma expressão.

Qual consulta produz

O que eu gostaria que minha consulta produzisse

O que eu preciso para a consulta produzir

obrigado

Respostas:

0 para resposta № 1

Se você tiver um número limitado de tipos de telefone, poderá usar um JUNTA EXTERNA ESQUERDA em telephone tabela para cada tipo. Ex:

SELECT e.name, t1.phoneNumber AS telephone1, t2.phoneNumber AS telephone2, e.email, ...
FROM person AS e
LEFT OUTER JOIN telephon AS t1 ON t1.personID = e.Id AND typeId = 1
LEFT OUTER JOIN telephon AS t2 ON t2.personID = e.Id AND typeId = 2
...
WHERE ....