我的数据库非常复杂,所以我将问题简化为下表。
TableA
和TableB
与NameID
中的TableB
字段相关联。我正在尝试创建一个SQL语句来产生所需的结果。我理解JOINs以及它们是如何工作的但是我无法模糊这一点。
TableB
中的每个项目TableA
中的项目永远不会超过2个。可能少于2项。
这将在SQL Server 2000服务器上使用。
表A
ID | Name
---+-----
1 | John
2 | Jane
3 | Bob
4 | Doug
表B
ID | NameID | Information
---+--------+------------
1 | 1 | Apples
2 | 1 | Apples
3 | 2 | Pears
4 | 2 | Grapes
5 | 3 | Kiwi
期望的结果
ID | Name | InformationA | InformationB
---+------+--------------+-------------
1 | John | Apples | Apples
2 | Jane | Pears | Grapes
3 | Bob | Kiwi | NULL
4 | Doug | NULL | NULL
答案 0 :(得分:3)
(编辑为两列提供首选顺序)
SELECT a.Id,
a.Name,
STUFF(MIN(STR(b.Id, 10) + b.Information), 1, 10, '') AS InformationA,
CASE
WHEN COUNT(b.Id) = 2 THEN STUFF(MAX(STR(b.Id, 10) +
b.Information), 1, 10, '')
END AS InformationB
FROM TableA a
LEFT JOIN TableB b
ON a.Id = b.NameId
GROUP BY a.Id,
a.Name
答案 1 :(得分:-1)
我认为您需要做的是pivot。看看是否符合您的需求。