求一个sql--在线等,马上给分!

lmdotnet 2013-01-25 04:28:49
表t1

字段 id App_state currentDispose curUser
1 1 内部阅办 cp
1 2 分配项目组 xm
1 1 内部阅办 zj
2 1 会签 xm
2 1 会签 cp
3 1 独立节点 user1
(id代表流程id,App_state代表流程节点状态,currentDispose代表流程节点名称,curUser代表流程节点处理人)

字段id相同的行表示是同一个流程的多个办理人:
例如id=1:
有三行数据,由于有一行App_state=2表示流程一现在由xm发起了内部阅办,分别发给了cp和zj,实际流程当前节点是App_state=2这行的currentDispose。
例如id=2:
有两行数据,由于App_state没有等于2的且多余1行,说明流程二分别发给了xm和cp进行会签。
例如id=3:
有一行数据,且App_state=1,代表这一行是流程当前节点,直接取currentDispose和curUser即可。

不知道有没有说清楚,总之想要查出每个流程当前的节点名称和处理人,结果应该是:
id currentDispose curUser
1 分配项目组 xm
2 会签 xm,cp
3 独立节点 user1

...全文
96 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DBA_磊仔 2013-01-25
  • 打赏
  • 举报
回复
如果App_state 只有1或2两种状态,这没问题
qq362459465 2013-01-25
  • 打赏
  • 举报
回复
kensouterry1 2013-01-25
  • 打赏
  • 举报
回复
1楼是正解不,我顶一下……
哥眼神纯洁不 2013-01-25
  • 打赏
  • 举报
回复

with tb(a,b,c,d)as(
select  1,     1,          '内部阅办',       'cp' union all
select  1,     2,          '分配项目组',      'xm' union all
select  1,     1,          '内部阅办',        'zj' union all
select  2,     1,          '会签',             'xm' union all
select  2,     1,          '会签',             'cp' union all
select  3,     1,         '独立节点',         'user1'
)
select distinct a,b,stuff((select ','+d from tb where a.a=a and a.b=b for xml path('')) ,1,1,'')d
from tb a where not exists (select 1 from tb where a=a.a and a.b<b) 

/*
运行结果
a	b	d
1	2	xm
2	1	xm,cp
3	1	user1
*/

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧