情况如下:
SRNo(PK) vtype(PK) vclass(PK) Node(PK) SeqNo(PK) Person Way
46 04 05 1 1 王东 审批:串行
46 04 05 2 1 张强 审批:串行
46 04 05 3 1 陈斌 审批:并行
46 04 05 3 2 李平 审批:并行
46 04 05 4 1 张强 通知
46 04 05 4 2 陈斌 通知
46 04 05 4 3 李平 通知
这样的一个情况,想实现最后在GridView中显示:
1 审批:串行 王东
2 审批:串行 张强
3 审批:并行 陈斌,李平
4 通知 张强,陈斌,李平
不用GridView也可以,不知道如何通过SQL语句来取数据加以实现!~~
恳请相助!~~
SRNo(PK) vtype(PK) vclass(PK) Node(PK) SeqNo(PK) Person Way
46 04 05 1 1 王东 审批:串行
46 04 05 2 1 张强 审批:串行
46 04 05 3 1 陈斌 审批:并行
46 04 05 3 2 李平 审批:并行
46 04 05 4 1 张强 通知
46 04 05 4 2 陈斌 通知
46 04 05 4 3 李平 通知
这样的一个情况,想实现最后在GridView中显示:
1 审批:串行 王东
2 审批:串行 张强
3 审批:并行 陈斌,李平
4 通知 张强,陈斌,李平
不用GridView也可以,不知道如何通过SQL语句来取数据加以实现!~~
恳请相助!~~
我只能想到这样 ,丢人了 掩面跑走。。
再通过视图去取数据
if object_id('[t]') is not null drop table [t]
create table [t] ([SRNo] int,[vtype] varchar(2),[vclass] varchar(2),[Node] int,[SeqNo] int,[Person] varchar(4),[Way] varchar(9))
insert into [t]
select 46,'04','05',1,1,'王东','审批:串行' union all
select 46,'04','05',2,1,'张强','审批:串行' union all
select 46,'04','05',3,1,'陈斌','审批:并行' union all
select 46,'04','05',3,2,'李平','审批:并行' union all
select 46,'04','05',4,1,'张强','通知' union all
select 46,'04','05',4,2,'陈斌','通知' union all
select 46,'04','05',4,3,'李平','通知'select * from [t]Go
--合并处理函数
CREATE FUNCTION f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re=''
SELECT @re=@re+','+CAST([Person] as varchar)
FROM [t]
WHERE Node=@col1
RETURN(STUFF(@re,1,1,''))
END
GO
--调用函数
SELECT Node,way,[Person]=dbo.f_str(Node) FROM [t] GROUP BY node,way
--删除测试
DROP TABLE [t]
DROP FUNCTION f_str
/*--结果
(7 行受影响)
SRNo vtype vclass Node SeqNo Person Way
----------- ----- ------ ----------- ----------- ------ ---------
46 04 05 1 1 王东 审批:串行
46 04 05 2 1 张强 审批:串行
46 04 05 3 1 陈斌 审批:并行
46 04 05 3 2 李平 审批:并行
46 04 05 4 1 张强 通知
46 04 05 4 2 陈斌 通知
46 04 05 4 3 李平 通知(7 行受影响)Node way Person
----------- --------- --------------------
1 审批:串行 王东
2 审批:串行 张强
3 审批:并行 陈斌,李平
4 通知 张强,陈斌,李平(4 行受影响)
--*/
OUTER APPLY(SELECT
[Person]= STUFF(REPLACE(REPLACE((
SELECT [Person] FROM [t] N WHERE Node = A.Node
FOR XML AUTO),'<N Person="',','),'"/>', ''), 1, 1, ''))N
/*
(7 行受影响)Node way Person
----------- --------- ---------------
1 审批:串行 王东
2 审批:串行 张强
3 审批:并行 陈斌,李平
4 通知 张强,陈斌,李平
*/