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形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
随机推荐
- ALAssetsLibrary学习总结
添加AssetsLibrary.framework 然后引入 #import <AssetsLibrary/ALAssetsLibrary.h> 一个获取所有图片的类 #import &l ...
- poj 4045 (树形DP)
先选一点为根节点找出所有父节点i到下面所有点距离和dp[i],该父节点下面有多少个点Node[i]. 然后求出所有节点的所有非子节点到该点的距离dp1[v]+=(dp1[u]+(dp[u]-dp[v] ...
- .NET自带IOC容器MEF之初体验
.NET自带IOC容器MEF之初体验 本文主要把MEF作为一种IOC容器进行讲解,.net中可用的IOC容器非常多,如 CastleWindsor,Unity,Autofac,ObjectBuil ...
- Android 常用的快捷键(随时更新)
android studio 是google出的一款好用不贵的ide,好像是powerd by idea的那个公司,反正风格上差不多.下面是android studio常用的快捷键设置,记录一下自己用 ...
- 一个实际的sonar代码检查的配置文件
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- UITableView实现格瓦拉飞天投票模块
格瓦拉目前来说动画效果确实做的还比较好,虽然不是说很炫但做到精致,这次就模仿了它投票的模块.其实想到要实现它还是有很多方法,不过这次我还是采用了苹果自带控件UITableView简简单单来实现它,再次 ...
- Android开发心得(转)
前言: 很早以前,就听人说过android以后会火起来,作为一个前瞻性对它有所了解会是一个转型的好机会,javaweb太成熟饱和了,现在市面上各种android手机层出不穷,网上各种android视频 ...
- Android Studio配置Dagger2 以及butterknife
一.配置butterknife 在build.gradle(Module)文件中的dependencies模块添加: dependencies { // add butterknife compile ...
- PHP在ubuntu中编译安装
关于怎么获取php源码和解压就不再说了. 编译的参数为: ./configure --prefix=/opt/php --with-bz2 --with-mcrypt --with-mhash --w ...
- 当 tcpdump -w 遇到 Permission denied
为了定位问题,需要在Linux上使用tcpdump并且保存到文件,遇到了如下问题: tcpdump port 9001 -w xxtcpdump: xx: Permission denied 因为已经 ...