posts - 23,  comments - 27,  trackbacks - 0

如有一个表 

 --建临时表

Create Table #TB
(
    FG_NO 
NVARCHAR(20)
    ,Part_No 
NVARCHAR(20)
)

 

 

废话就不说了 

以前的写法N累才能拿到结果,不多说 

 

 --插入测试记录

INSERT INTO #TB
SELECT 'FG1','P1' Union All 
SELECT 'FG2','P1' Union All 
SELECT 'FG3','P1' Union All 
SELECT 'FG4','P2' Union All 
SELECT 'FG5','P2' Union All 
SELECT 'FG6','P2'

--Or
INSERT INTO #TB(FG_NO,Part_No) Values('FG1','P1'),('FG2','P1'),('FG3','P1'),('FG4','P2'),('FG5','P2'),('FG6','P2');

--记得以前使用ACCESS的时候是FG_NO +FG_NO就能合并到一行
SELECT Part_No,FG_NO
FROM (SELECT DISTINCT Part_No FROM #TB) A OUTER APPLY(
        
SELECT FG_NO= STUFF(REPLACE(REPLACE(
            (
                
SELECT FG_NO FROM #TB N
                
WHERE Part_No = A.Part_No
                
FOR XML AUTO
            ), 
'<N FG_NO="'','), '"/>'''), 11'')
)N


--结果
--
Part_No    FG_NO
--
P1       FG1,FG2,FG3
--
P2       FG4,FG5,FG6

 

 

posted on 2010-07-18 10:06 Shannon 阅读(65) 评论(0) 编辑 收藏