首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sqL 工作流遇到的有关问题 求大神解答 万分感谢

2012-10-29 
sqL工作流遇到的问题 求大神解答万分感谢任务表TaskIDDate(时间)User(发布人)Amount(金额)171720120803adm

sqL 工作流遇到的问题 求大神解答 万分感谢
任务表
 TaskID Date(时间) User(发布人) Amount(金额)
  1717 20120803 admin 1000

  1718 20120803 admin 12000
流程表
 Id taskID(任务ID) 节点步骤(Step) 处理人(ProUser) 处理时间(ProcTime)

 9447 1717 Submit User01 20120804

 9448 1717 UpdateSerNo User02 20120805

 9449 1717 GM User03 20120806

 9450 1717 Cashier User04 空 还未处理

我想查出 任务表中每条任务到Cashier步骤 的处理人 ,最后每条任务最后处理时间 , 流程当前处理人,并可以根据以上条件查询

我想得到的结果是 
TaskID Date(时间) User(发布人) Cashier步骤处理人(StepUserName) 最后处理时间(LastTime) 当前处理人(ProcTime)
 1717 20120803 admin User04 20120806 User04  

 1718 20120803 admin 空 空 空



[解决办法]

SQL code
select TaskId,[Date],[User],(select top 1 ProUser from 流程表 where taskId=a.TaskId and step='Cashier') as Cashier步骤处理人,(select top 1 ProcTime from 流程表 where taskId=a.TaskId order by ProcTime desc) as 最后处理时间,(select top 1 ProUser from 流程表 where taskId=a.TaskId and ProUser is null order by id) as  当前处理人from 任务表 a
[解决办法]
SQL code
with tt as (select TaskId,[Date],[User],(select top 1 ProUser from 流程表 where taskId=a.TaskId and step='Cashier') as Cashier步骤处理人,(select top 1 ProcTime from 流程表 where taskId=a.TaskId order by ProcTime desc) as 最后处理时间,(select top 1 ProUser from 流程表 where taskId=a.TaskId and ProUser is null order by id) as  当前处理人from 任务表 a)select * From tt where Cashier步骤处理人=@参数1and 最后处理时间> @参数2 and .....
[解决办法]
SQL code
select * from tasks--结果:taskid  date                    users   amount----------------------------------------------1717    2012-08-03 00:00:00.000    admin    10001718    2012-08-03 00:00:00.000    admin    12000----------------------------------------------select * from process--结果:id      taskid   step          prouser   proctime-----------------------------------------------9447    1717    submit            user01    201208049448    1717    updateserno    user02    201208059449    1717    gm            user03    201208069450    1717    cashier            user04    -------------------------------------------------使用下面sql语句查询select dd.taskid,dd.date,dd.users,[cashier步骤处理人],mm.proctime [最后处理时间], [当前处理人]from (select a.taskid TaskID,Date,a.users Users,b.prouser 'cashier步骤处理人',b.prouser '当前处理人' from tasks a left join (select *from process where step='cashier' ) bon a.taskid=b.taskid)dd left join(select taskid,max(proctime) proctime from process group by taskid)mmon dd.taskid=mm.taskid--结果:id      date                    users   cashier步骤处理人  最后处理时间     当前处理人-------------------------------------------------1717    2012-08-03 00:00:00.000    admin    user04           20120806            user041718    2012-08-03 00:00:00.000    admin    NULL             NULL             NULL---------------------------------------------------如果需要查询条件的话,可以在后面添加where子句;例如:where [当前处理人]='user04' and proctime>'2012-08-01' 

热点排行
Bad Request.