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'
- Sql Server FOR XML PATH
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- 灵活运用 SQL SERVER FOR XML PATH
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- 转王波洋,SQL语句中的 for XML Path('')
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- sql FOR XML PATH
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- FOR XML PATH 解决联接返回结果集各记录问题
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- SQL Server XML Path[转]
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- SQL FOR XML PATH 和 Stuff 用法
sql stuff 用法 1.作用 删除指定长度的字符,并在指定的起点处插入另一组字符. 2.语法 STUFF ( character_expression , start , length ,cha ...
- sql for xml path用法
一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下: 接下来我们来看 ...
- FOR XML PATH 简单介绍
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
随机推荐
- hdoj 2122 Ice_cream’s world III
并查集+最小生成树 Ice_cream’s world III Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...
- 转载LINQ TO Entity 在数据库发生更改时更新实体数据模型 .edmx 文件
转载原出处:http://blog.csdn.net/litao2/article/details/8629335 在“模型浏览器”中,右击 .edmx 文件,然后选择“从数据库更新模型”. 模型更新 ...
- Oracle- 存储过程和异常捕捉
这段时间晚上有时候去打打球,回家看看电视剧,日子一天天过…….学了点ORACLE存储过程基础,作一下备注,以便日后需查阅. 创建无参存储过程 create procedure p_myPro1 is ...
- iOS 应用数据存储的常用方式
iOS 开发中,经常会有将数据存储到本地的需求.比如一些数据的缓存,或者记录下用户的账号密码,记录下下次是否自动登录等,这些都需要将数据记录到本地.iOS中,数据存储到本地的常见方式有三种: 一: 使 ...
- MFC版美女找茬
今天心情:捡了个闲暇. 前几天工作出了个漏洞,电话会议时候怎么都是忽大忽小的声音,实在没听清电话会议的内容,完了依据想象交了一个设计方案,之后便是赋闲. 进入正题,美女找茬实现不难,没有设计上的难度, ...
- c#操作sqlite(包含中文支持)
一个朋友写的,拿来分享给大家,希望有用 原文 Codeusing System; using System.Data; using System.Text.RegularExpressions; us ...
- hdu 1392凸包周长
//用的自己的计算几何模板,不过比较慢嘿嘿 //要注意只有一个点和两个点 //Computational Geometry //by kevin_samuel(fenice) Soochow Univ ...
- cocos2d-x 开发时的注意点
转自:http://cjhworld.blog.163.com/blog/static/20707803620132693629307/ 1. 按照Cocos2d的编程风格,尽量少用构造函 ...
- ShowcaseView-master
ShowcaseView.rar
- [React Fundamentals] Development Environment Setup
In this lesson we'll setup a simple build process for converting our ES6 React components into ES5 u ...