SQL查询将数据从一个字段排序到两个结果字段

时间:2018-01-15 22:18:21

标签: sql sql-server-2014

我看到了几件类似于我需要做的事情,但并不完全,只是没有足够的信息来完成这项工作。

表有三个字段(GroupID,ParentID和Name)。 ChildID的ParentID包含Parent的相关GroupID。然后,Parent在表中有一个不同的行,然后是Child。父或子的名称位于名称字段中。

我希望结果为我提供ChildName和ParentName的列,只需从表中抓取某些Parent的子项进一步过滤。

要说明另一种方式,我希望与表中某些ParentID相关的所有子项使用ChildName和相关的ParentName。

如何查询此单个表以获取这些结果。

=============================================== =================================

好的第一篇帖子新手在这里,以防不明显。谢谢你的帮助。

这是主题标题和标记中所述的SQL。下次我还会包括身体。更确切地说,它是SQL Server 2014。

我正在操作的数据(源)的一个例子是:

====================================

| GroupId | ParentId |名称|

| 701 | 818 |项目A |

| 703 | 818 |项目C |

| 704 | 818 |项目D |

| 818 | 0 |容器A |

我最想得到的(目标)是:

=============================================

| GroupId | ParentId |项目|容器|

| 701 | 818 |项目A |容器A |

| 703 | 818 |项目C |容器A |

| 704 | 818 |项目D |容器A |

实际的表包含许多容器,而我只是缩小到其中一些容器。认为该部分将是一个WHERE语句(即:WHERE GroupId = 818或GroupId = 743 ......等),这些都是我在这里学到的。但可能有更好的方法。

感谢

1 个答案:

答案 0 :(得分:0)

如果DBMS是mysql并且你不介意一个相当庞大的数据集,因为如果GroupID不明显,这可能会变得很大。 (每个孩子乘以其父母的群组ID的数量

select t1.*, t2.Name as parentName from theTable as t1 JOIN theTable as t2 ON (t1.parentID = t2.GroupID) WHERE t1.parentId in (1,2,3)