SELECT 
OLevel,
WorkOrgID,
WorkOrgName,
PlanNum,
PlanFinishNum,
PlanUnFinishNum,
PlanCanceledNum,
PlanChangedNum,
OrtherNum,
 PlanTime,
 ActualTime,
 RIGHT(PlanIDs,LEN(PlanIDs)-1) AS PlanIDs
 FROM (SELECT  
        ( CASE MIN(Parent)
            WHEN 'E13744A1-7E2C-42E8-8E7B-4D52F9E04A08' THEN MIN(ROLevel)
            ELSE MIN(OLevel)
          END ) AS OLevel ,
        ( CASE MIN(Parent)
            WHEN 'E13744A1-7E2C-42E8-8E7B-4D52F9E04A08'
            THEN MIN(RegulatoryOrgID)
            ELSE WorkOrgID
          END ) AS WorkOrgID ,
        ( CASE MIN(Parent)
            WHEN 'E13744A1-7E2C-42E8-8E7B-4D52F9E04A08' THEN MIN(RoName)
            ELSE WorkOrgName
          END ) AS WorkOrgName ,
        MIN(RegulatoryOrgID) AS RegulatoryOrgID ,
        COUNT(1) AS PlanNum ,
        SUM(CASE FormStatusCode
              WHEN 'Finish' THEN 1
              ELSE 0
            END) AS PlanFinishNum ,
        COUNT(CASE WHEN FormStatusCode != 'Finish' THEN 1
                   ELSE 0
              END) AS PlanUnFinishNum ,
        SUM(CASE WHEN FormStatusCode = 'Canceled' THEN 1
                 ELSE 0
            END) AS PlanCanceledNum ,
        SUM(CASE WHEN FormStatusCode = 'Changed' THEN 1
                 ELSE 0
            END) AS PlanChangedNum ,
        SUM(CASE WHEN FormStatusCode IN ( 'Approved', 'Begining', 'Begin' )
                 THEN 1
                 ELSE 0
            END) AS OrtherNum ,
        SUM(CASE WHEN DATEDIFF(mi, PlanBeginTime, PlanEndTime) < 0 THEN 0
                 WHEN DATEDIFF(mi, PlanBeginTime, PlanEndTime) IS NULL THEN 0
                 ELSE DATEDIFF(mi, PlanBeginTime, PlanEndTime)
            END) AS PlanTime ,
        SUM(CASE WHEN DATEDIFF(mi, CheckInApproveTime, CheckOutApproveTime) < 0
                 THEN 0
                 WHEN DATEDIFF(mi, CheckInApproveTime, CheckOutApproveTime) IS NULL
                 THEN 0
                 ELSE DATEDIFF(mi, CheckInApproveTime, CheckOutApproveTime)
            END) AS ActualTime ,
        ( SELECT    ',' +''''+ CAST(wp.PlanID AS VARCHAR(40)) +''''
          FROM      dbo.PL_WorkPlan wp
                    LEFT JOIN dbo.PL_WorkDetail wd ON wd.PlanID = wp.PlanID
                    LEFT JOIN dbo.PT_WorkPoint pp ON wp.PlanID = pp.PlanID
                    INNER JOIN dbo.SEC_Organization o ON o.Id = wd.WorkOrgID
                    LEFT JOIN dbo.SEC_Organization RO ON ro.Id = wd.RegulatoryOrgID
          WHERE     wp.FormStatusCode NOT IN ( 'Draft', 'Approving' )
                    AND wd.WorkOrgName IS NOT NULL
                    
                    AND ( WorkOrgID = V.WorkOrgID )
        FOR
          XML PATH('')
        ) PlanIDs
FROM    ( SELECT    wd.WorkTypeCode ,
                    wp.planid ,
                    wp.PlanBeginTime ,
                    wp.PlanEndTime ,
                    WP.FormStatusCode ,
                    PlanTypeCode ,
                    wd.WorkOrgID ,
                    wd.RegulatoryOrgID ,
                    o.Parent ,
                    wd.WorkOrgName ,
                    o.[Level] AS OLevel ,
                    RO.[Level] AS ROLevel,
                    Ro.NAME AS RoName,
                    CheckInApproveTime ,
                    CheckOutApproveTime
          FROM      dbo.PL_WorkPlan wp
                    LEFT JOIN dbo.PL_WorkDetail wd ON wd.PlanID = wp.PlanID
                    LEFT JOIN dbo.PT_WorkPoint pp ON wp.PlanID = pp.PlanID
                    INNER JOIN dbo.SEC_Organization o ON o.Id = wd.WorkOrgID
                    LEFT JOIN dbo.SEC_Organization RO ON ro.Id = wd.RegulatoryOrgID
          WHERE     wp.FormStatusCode NOT IN ( 'Draft', 'Approving' )
                    AND wd.WorkOrgName IS NOT NULL
                    
        ) V
WHERE   1 = 1  
      and WorkTypeCode in ($WorkTypeCode$)
 and V.PlanBeginTime >= @BeginTime
 and V.PlanBeginTime < @EndTime
{? and V.LineID = @LineID } 
        {? and  V.PlanTypeCode = @PlanTypeCode }
        {? and V.WorkOrgID = @WorkOrgID }
GROUP BY 
        WorkOrgID ,
        WorkOrgName) 
      as  V2
        WHERE V2.WorkOrgID !='00000000-0000-0000-0000-000000000000'
        

使用for xml path 分组查询的更多相关文章

  1. Sql Server FOR XML PATH

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  2. 灵活运用 SQL SERVER FOR XML PATH

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  3. 转王波洋,SQL语句中的 for XML Path('')

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  4. sql FOR XML PATH

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  5. FOR XML PATH 解决联接返回结果集各记录问题

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  6. SQL Server XML Path[转]

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  7. SQL FOR XML PATH 和 Stuff 用法

    sql stuff 用法 1.作用 删除指定长度的字符,并在指定的起点处插入另一组字符. 2.语法 STUFF ( character_expression , start , length ,cha ...

  8. sql for xml path用法

    一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下: 接下来我们来看 ...

  9. FOR XML PATH 简单介绍

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

随机推荐

  1. hdoj 2122 Ice_cream’s world III

    并查集+最小生成树 Ice_cream’s world III Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  2. 转载LINQ TO Entity 在数据库发生更改时更新实体数据模型 .edmx 文件

    转载原出处:http://blog.csdn.net/litao2/article/details/8629335 在“模型浏览器”中,右击 .edmx 文件,然后选择“从数据库更新模型”. 模型更新 ...

  3. Oracle- 存储过程和异常捕捉

    这段时间晚上有时候去打打球,回家看看电视剧,日子一天天过…….学了点ORACLE存储过程基础,作一下备注,以便日后需查阅. 创建无参存储过程 create procedure p_myPro1 is ...

  4. iOS 应用数据存储的常用方式

    iOS 开发中,经常会有将数据存储到本地的需求.比如一些数据的缓存,或者记录下用户的账号密码,记录下下次是否自动登录等,这些都需要将数据记录到本地.iOS中,数据存储到本地的常见方式有三种: 一: 使 ...

  5. MFC版美女找茬

    今天心情:捡了个闲暇. 前几天工作出了个漏洞,电话会议时候怎么都是忽大忽小的声音,实在没听清电话会议的内容,完了依据想象交了一个设计方案,之后便是赋闲. 进入正题,美女找茬实现不难,没有设计上的难度, ...

  6. c#操作sqlite(包含中文支持)

    一个朋友写的,拿来分享给大家,希望有用 原文 Codeusing System; using System.Data; using System.Text.RegularExpressions; us ...

  7. hdu 1392凸包周长

    //用的自己的计算几何模板,不过比较慢嘿嘿 //要注意只有一个点和两个点 //Computational Geometry //by kevin_samuel(fenice) Soochow Univ ...

  8. cocos2d-x 开发时的注意点

    转自:http://cjhworld.blog.163.com/blog/static/20707803620132693629307/ 1.       按照Cocos2d的编程风格,尽量少用构造函 ...

  9. ShowcaseView-master

      ShowcaseView.rar

  10. [React Fundamentals] Development Environment Setup

    In this lesson we'll setup a simple build process for converting our ES6 React components into ES5 u ...