我有一个sql查询,它提取数据,但是每个人可以有很多数字,每个人产生多行,我需要每人1行

时间:2015-10-08 10:12:31

标签: sql sql-server

实施例

我的查询会为bob生成两行,唯一的区别是电话号码。但是,我从中获得电话号码的表格有电话号码。例如bob的第一行,电话类型ID为1,第二行为2.我需要它们在同一行

我假设我需要为每个电话ID类型做一个子查询......但这似乎不起作用。我一直在回来

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

What query produces

我希望我的查询产生

What i need for query to produce

由于

1 个答案:

答案 0 :(得分:0)

如果您的电话类型数量有限,则可以在telephone表格中为每种类型使用 LEFT OUTER JOIN 。例如:

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 ....