急:求救恩人SQL 查询问题?
如下表:   
 ID   P_NAME   P_TYPE      P_CITY 
 ----------------------------------- 
 1         P1                  X                  SH 
 2         P2                  X                  SH 
 3         P3                  M                  BJ 
 4         P4                  M                  SZ 
 5         P5                  M                  BJ 
 6         P6                  M                  SZ     
 如下输出结果:   
    P_NAME+P_TYPE                           P_CITY 
 ----------------------------------- 
    P1:X|P2:X                                          SH 
    P3:M|P5:M                                          BJ 
    P4:M|P6:M                                          SZ     
 就是两个字断P_NAME+P_TYPE   累加,中间用 ": "符号隔开,然后P_CITY同样的记录累加,中间 "| "符号隔开.   
 用一条语句实现? 
------解决方案--------------------create function dbo.fn_Merge(@P_CITY  varchar(1000)) 
 returns varchar(8000) 
 as 
 begin 
    declare @name varchar(8000) 
    set @name= ' ' 
    select @name=@name+ '| '+P_NAME+ ': '+P_TYPE from test where P_CITY=@P_CITY 
    return stuff(@name,1,1, ' ') 
 end 
 go   
 create table test(ID int,P_NAME varchar(10),P_TYPE varchar(10),P_CITY varchar(10)) 
 insert test select 1, 'P1 ', 'X ', 'SH ' 
 union all select 2, 'P2 ', 'X ', 'SH ' 
 union all select 3, 'P3 ', 'M ', 'BJ ' 
 union all select 4, 'P4 ', 'M ', 'SZ ' 
 union all select 5, 'P5 ', 'M ', 'BJ ' 
 union all select 6, 'P6 ', 'M ', 'SZ '   
 select distinct [P_NAME+P_TYPE]=dbo.fn_Merge(P_CITY),P_CITY from test