【发布时间】:2021-03-17 16:38:56
【问题描述】:
我有一个数据库表(表 A),在 SQL Server 2016 中如下所示:
表A:
TaskID - TaskName - AssignedTo
-------------------------------
1 Task 1 1,4
2 Task 2 3
3 Task 3 2,3
4 Task 4 2,4,5
我还有一个 TableB,它是 AssignedTo 的查找表,如下所示:
表B:
AssigneeID - Name
-------------------------------
1 John Smith
2 Janet Wright
3 Tom Morgan
4 Kevin Warren
5 Mike Taylor
我想编写一个查询来生成以下报告/表格:
TaskID - TaskName - NameAssignedTo
------------------------------------------------------------
1 Task 1 John Smith,Kevin Warren
2 Task 2 Tom Morgan
3 Task 3 Janet Wright,Tom Morgan
4 Task 4 Janet Wright,Kevin Warren,Mike Taylor
如果可以通过编写 SQL 查询来实现,那就太好了。任何人都可以帮忙吗?非常感谢!
【问题讨论】:
-
修复你的数据模型!不要将数字存储在字符串中!不要在一个字符串中存储多个值!声明外键关系!
-
您好@Gordon,感谢您的评论,我只是以上面的两个表格为例来解释我的问题。然而,这两个表没有正式声明的外键关系。你能帮我处理 SQL 查询吗?非常感谢!
-
。 .他们当然没有。他们不能。这就是我发表评论的目的。字符串和整数不是兼容的类型。 应该有一个关系,但你不能定义它。了解联结/关联表以及在 SQL 中表示这种关系的正确方法。
-
在提出问题时,您需要提供一个可重现的最小示例。请参考以下链接:stackoverflow.com/help/minimal-reproducible-example 请提供以下内容: (1) DDL 和样本数据填充,即 CREATE table(s) 加上 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上面#1 中的样本数据。 (4) 你的 SQL Server 版本 (SELECT @@version;)
-
@Denis 我认为你问的问题很好。非常清楚。您不需要需要提供最小的可重现示例,但如果您这样做,人们将能够更好地提供帮助。忽略关于你不应该这样做或那样做的讲座......有时我们没有选择。
标签: sql sql-server reporting