gpt4 book ai didi

sql-server - SQL Server 2000 - 如何在查询的最终结果中轮换联接结果?

转载 作者:行者123 更新时间:2023-12-03 11:17:39 25 4
gpt4 key购买 nike

我的数据库非常复杂,所以我将我的问题简化为下表。

TableATableB 通过 TableB 中的 NameID 字段关联。我正在尝试创建一个 SQL 语句来产生所需的结果。我了解 JOIN 及其工作原理,但我无法弄清楚这一点。

对于 TableA 中的每个项目,TableB 中的项目永远不会超过 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

最佳答案

(编辑以给出两列的首选顺序)

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

关于sql-server - SQL Server 2000 - 如何在查询的最终结果中轮换联接结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com