DOGNET

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

前置条件:

 主表a与子表b的定义如下,关系是一对多的关系

要求:

为统计报账中心各个审批单据所耗时间,需要提供3.1-5.31日所有通过已付款状态的单据的各个审批人的耗时,格式要求如下:

 

单据号

申请部门

申请人

申请时间(年月日时分)

审批人1

审批人1审批时间

审批人2

审批人2审批时间

….

….

审批人n

审批人n审批时间

 

 

 

 

 

 

 

 

 

 

 

 

 

 sql:

declare @sql varchar(max)
select @sql=isnull(@sql+',','')+'max(case when 审批顺序='''+ltrim(审批顺序)+''' then 审批人姓名 else '''' end) as [审批人'+ltrim(审批顺序)+']'
+',max(case when 审批顺序='''+ltrim(审批顺序)+''' then Datediff(minute,审批生效时间,审批时间) else null end) as [审批时间'+ltrim(审批顺序)+']'
from (
SELECT distinct
a.ApprOrder 审批顺序
FROM Approval a
INNER JOIN ReMain rm ON a.RequestID=rm.ID
) t order by 审批顺序
set @sql='select 单据号,
部门id,部门名称,申请人id,申请人名称,
申请时间,'+@sql+' from ('+'
SELECT
rm.RAApplyNo 单据号,rm.DepID 部门id,rm.DepName 部门名称,rm.ApplyManID 申请人id,rm.ApplyManName 申请人名称,rm.ApplyDate 申请时间,
a.ApprManDutyName 审批人职位,a.ApprManID 审批人id,a.ApprManName 审批人姓名,a.CreateDate 审批生效时间,a.ApprDate 审批时间,a.ApprOrder 审批顺序
FROM Approval a INNER JOIN ReMain rm ON a.RequestID=rm.ID
WHERE
rm.ApplyDate >= ''2010-03-01''
AND rm.ApplyDate <''2010-06-1''
AND rm.[Status] IN (3,6)
) t group by
单据号,部门id,部门名称,申请人id,申请人名称,申请时间'
exec(@sql)

 

 

 

 

posted on 2010-06-10 12:36  DOGNET  阅读(908)  评论(0编辑  收藏  举报