日期:2014-05-17  浏览次数:20553 次

求一个sql?---万分感谢!
SELECT ja.AppO_Title,ja.AppO_Values,ja.AppD_ID,ja.App_State,jatd.AppD_Name,u.UserName FROM YK_NewRequirement yn 
inner join JHOA_Approve ja on yn.MainID = ja.AppO_Values 
inner join JHOA_Approve_Temp_Dispose jatd on ja.AppD_ID = jatd.AppD_ID 
inner join Users u on ja.Reg_Code = u.UserID 
where  (ja.App_State=1 or ja.App_State=2) and 
(ja.AppO_Values='JHC00003337' or ja.AppO_Values='JHC00002036'
or ja.AppO_Values='JHC00002453' or ja.AppO_Values='JHC00002579' or ja.AppO_Values='JHC00001848')
group by ja.AppO_Title,ja.AppO_Values,ja.AppD_ID,ja.App_State,jatd.AppD_Name,u.UserName


查询结果是:

AppO_Values     AppD_ID App_State  AppD_Name         UserName

JHC00001848 1330   1    项目经理归档         a
JHC00002453 1332   1    会签                  c
JHC00002453 1332   1    会签                  d
JHC00002453 1332   1    会签                  e
JHC00002579 1439   2    立项决策         f
JHC00003337 1413   2    确认建议书的提交时间     xm
JHC00003337 1655   1    内部阅办         cp
JHC00003337 1655   1    内部阅办         zj

字段AppO_Values是表单ID,
例如:JHC00001848代表该表单的流程正在进行项目经理归档,处理人是a
例如:JHC00002453代表该表单的流程同时发给了3个人进行会签,处理人是c,d,e
例如:JHC00002579代表该表单的流程正在进行立项决策,处理人是f
例如:JHC00003337代表该表单的流程正在进行确认建议书的提交时间,处理人是xm

我想通过一条sql在上面的sql查询结果中查出:

AppO_Values     AppD_ID App_State  AppD_Name         UserName

JHC00001848 1330   1    项目经理归档         a
JHC00002453 1332   1    会签                  c,d,e
JHC00002579 1439   2    立项决策         f
JHC00003337 1413   2    确认建议书的提交时间    xm


------解决方案--------------------
select AppO_Values,AppD_ID,App_State,AppD_Name,stuff((select ','+UserName from tb where  tb1.AppO_Values=tb2.AppO_Values and tb1.AppD_ID=tb2.AppD_ID and tb1.App_State=tb2.App_State andtb1.AppD_Name=tb2.AppD_Name for xml path('')),1,1,'')UserName from tb tb1
------解决方案--------------------
http://bbs.csdn.net/topics/230087434