栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL Server-CTE递归,是否在子数据中循环?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL Server-CTE递归,是否在子数据中循环?

如果您对一个特定的日期感兴趣,这很简单。

看来您需要将

WHERe
过滤器移至查询的较早部分。进入
CTE_OrgHours
CTE_OrgHours
每个组织应返回一行,其中包含相关时间的总和。所有过滤都应在此查询中进行。递归部分以后希望每个组织中有一行
CTE_OrgHours

WITHCTE_OrgHoursAS(    SELECt        Org.OrgId        ,Org.OrgParentId        ,Org.OrgName        ,ISNULL(SUM(Overtime.TotalOtReal), 0) AS SumHours    FROM        CsOrganization AS Org        LEFT JOIN EmHisOrganization AS Emp ON Emp.OrgId = Org.OrgID        LEFT JOIN EmOvertime AS Overtime ON  Overtime.EmpId = Emp.EmpId AND Overtime.AttdDate = '2016-05-12'    GROUP BY        Org.OrgId        ,Org.OrgParentId        ,Org.OrgName),CTE_RecursiveAS(    SELECt         CTE_OrgHours.OrgId        ,CTE_OrgHours.OrgParentId        ,CTE_OrgHours.OrgName        ,CTE_OrgHours.SumHours        ,1 AS Lvl        ,CTE_OrgHours.OrgId AS StartOrgId        ,CTE_OrgHours.OrgName AS StartOrgName    FROM CTE_OrgHours    UNIOn ALL    SELECt         CTE_OrgHours.OrgId        ,CTE_OrgHours.OrgParentId        ,CTE_OrgHours.OrgName        ,CTE_OrgHours.SumHours        ,CTE_Recursive.Lvl + 1 AS Lvl        ,CTE_Recursive.StartOrgId        ,CTE_Recursive.StartOrgName    FROM        CTE_OrgHours        INNER JOIN CTE_Recursive ON CTE_Recursive.OrgId = CTE_OrgHours.OrgParentId)SELECt    StartOrgId    ,StartOrgName    ,SUM(SumHours) AS TotalHoursFROM CTE_RecursiveGROUP BY    StartOrgId    ,StartOrgNameORDER BY StartOrgId;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506571.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号