WITH PRO_Info AS ( SELECT LongCode ,project_id ,project_guid ,project_shortname ,project_name ,EpsProjId ,EpsProjName ,parent_id ,parent_guid FROM PLN_PROJECT WHERE project_guid='0c28bd96-780c-4cbc-9a94-9cce8fffbf04' UNION ALL SELECT pp.LongCode ,pp.project_id ,pp.project_guid ,pp.project_shortname ,pp.project_name ,pp.EpsProjId ,pp.EpsProjName ,pp.parent_id ,pp.parent_guid FROM PLN_PROJECT AS pp INNER JOIN PRO_Info AS po ON pp.parent_guid=po.project_guid ) SELECT * INTO #PRO_Info FROM PRO_Info 上述语句是什么意思
时间: 2024-02-14 17:31:46 浏览: 186
上述语句是一个SQL查询语句,它通过递归查询获取指定项目GUID的所有相关信息,并将结果存储在一个临时表 #PRO_Info 中。
具体解释如下:
- 第一部分是一个递归查询(使用UNION ALL),从 PLN_PROJECT 表中选择与指定的 project_guid 相等的记录,并返回相应的列。
- 第二部分是递归查询中的递归部分。它连接 PLN_PROJECT 表与前一步查询结果中的数据,通过 parent_guid = project_guid 的关联条件,获取子项目的信息。
- 最后,整个查询结果被插入到名为 #PRO_Info 的临时表中。
这样做的目的是为了获取指定项目GUID及其所有相关子项目的信息,并将其存储在临时表中供后续使用。
相关问题
WITH PRO_Info AS ( SELECT LongCode ,project_id ,project_guid ,project_shortname ,project_name ,EpsProjId ,EpsProjName ,parent_id ,parent_guid FROM PLN_PROJECT WHERE project_guid='0c28bd96-780c-4cbc-9a94-9cce8fffbf04' UNION ALL SELECT pp.LongCode ,pp.project_id ,pp.project_guid ,pp.project_shortname ,pp.project_name ,pp.EpsProjId ,pp.EpsProjName ,pp.parent_id ,pp.parent_guid FROM PLN_PROJECT AS pp INNER JOIN PRO_Info AS po ON pp.parent_guid=po.project_guid ) SELECT * INTO #PRO_Info FROM PRO_Info
根据您提供的SQL查询语句,这段代码的用是将PLN_PROJECT中指定project_guid的记录与其父项目的相关信息合并,并将结果储在名为#PRO_Info的临表中。
具体过程下:
1. 首先使用UNION ALL将N_PROJECT表中project_guid为0c28bd96-780c-cbc-9a94-9cce8fbf04'的记录选取出来作为初始的PRO_Info表。
2. 然后,使用递归查询(通过INNER JOIN)将PRO_Info表与PLN_PROJECT表进行连接,连接条件是PLN_PROJECT的parent_guid等于PRO_Info的project_guid,这样就可以找到每个项目的父项目信息。
3. 最后,将最终的结果存储在一个名为#PRO_Info的临时表中,该表包含了所有项目及其对应的父项目信息。
请注意,这段代码使用了递归查询,即在查询的过程中引用了自身的结果,以实现对所有层级的父项目信息的获取。
阅读全文