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形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
随机推荐
- 1N系列稳压二极管参数
1N系列稳压二极管参数 型号 稳定电压 型号 稳定电压 型号 稳定电压 1N5236 7.5 1N5738 12 1N6002 12 1N5237 8.2 1N5739 13 1N6003 13 1N ...
- hdoj 5500 Reorder the Books
Reorder the Books Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- [OC Foundation框架 - 2] NSString 的创建
A. 不可变字符串 void stringCreate() { //Don't need to release memory by this way NSString *str1 = @"S ...
- AutoLayout框架Masonry使用心得
AutoLayout框架Masonry使用心得 字数1769 阅读1481 评论1 喜欢17 我们组分享会上分享了页面布局的一些写法,中途提到了AutoLayout,会后我决定将很久前挖的一个坑给填起 ...
- 转载 SharePoint Foundation和SharePoint Server的区别
SharePoint Server 2010用来取代MOSS 2007,它有标准版和企业版两个版本,使用SQL Server数据库: 早期版本中的STS或WSS在2010中更名为SharePoint ...
- docker——Dockerfile创建镜像
写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境 ...
- jQuery遍历json
使用 each var anObject = {one:1,two:2,three:3}; $.each(anObject,function(name,value) { alert(name); al ...
- Codeforces Round #324 (Div. 2) D. Dima and Lisa 哥德巴赫猜想
D. Dima and Lisa Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/probl ...
- careercup-中等难度 17.8
17.8 给定一个整数数组(有正数和负数),找出总和最大的连续序列,并返回总和. 解法: 就是求连续子序列的和最大,不过存在一个问题: 假设整个数组都是负数,怎么样才是正确的行为呢?看看这个简单的数组 ...
- [Effective C++ --020]宁以pass-by-reference-to-const替换pass-by-value
前言: 我们都用过C的值传递方式,那么在C++情况下,值传递是怎样工作的呢? 比如: int foo(int x); int i; foo(i); 1.程序内部先取得i的一个副本 2.将副本传递到fo ...