如有一个表
--建临时表
Create Table #TB
(
FG_NO NVARCHAR(20)
,Part_No NVARCHAR(20)
)
(
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="', ','), '"/>', ''), 1, 1, '')
)N
--结果
--Part_No FG_NO
--P1 FG1,FG2,FG3
--P2 FG4,FG5,FG6
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="', ','), '"/>', ''), 1, 1, '')
)N
--结果
--Part_No FG_NO
--P1 FG1,FG2,FG3
--P2 FG4,FG5,FG6
