22,301
社区成员




CREATE TABLE #A(
ORDERID INT,
ID INT,
FACTORS VARCHAR(20),
CAUSES VARCHAR(20),
DEPT_REMARK VARCHAR(20)
)
INSERT INTO #A VALUES (2021010701,1,'','','材料影响')
INSERT INTO #A VALUES (2021010701,1,'料','工装影响','')
INSERT INTO #A VALUES (2021010701,1,'人','材料影响','')
INSERT INTO #A VALUES (2021010702,1,'','','材料影响')
INSERT INTO #A VALUES (2021010702,2,'料','无坯件','')
SELECT *,ISNULL(FACTORS+'+','')+ISNULL(CAUSES+'+','')+ISNULL(DEPT_REMARK+'+','')
FROM
(SELECT DISTINCT ORDERID,ID,
STUFF((SELECT DISTINCT '|'+FACTORS FROM #A WHERE A.ORDERID=ORDERID AND A.ID=ID AND FACTORS<>'' FOR XML PATH('')),1,1,'') AS FACTORS,
STUFF((SELECT DISTINCT '|'+CAUSES FROM #A WHERE A.ORDERID=ORDERID AND A.ID=ID AND CAUSES<>'' FOR XML PATH('')),1,1,'') AS CAUSES,
STUFF((SELECT DISTINCT '|'+DEPT_REMARK FROM #A WHERE A.ORDERID=ORDERID AND A.ID=ID AND DEPT_REMARK<>'' FOR XML PATH('')),1,1,'') AS DEPT_REMARK
FROM #A A) AS B
CREATE TABLE #A(
ORDERID INT,
ID INT,
FACTORS VARCHAR(20),
CAUSES VARCHAR(20),
DEPT_REMARK VARCHAR(20)
)
INSERT INTO #A VALUES (2021010701,1,'','','材料影响')
INSERT INTO #A VALUES (2021010701,1,'料','工装影响','')
INSERT INTO #A VALUES (2021010701,1,'人','缺人员','')
INSERT INTO #A VALUES (2021010702,1,'','','材料影响')
INSERT INTO #A VALUES (2021010701,1,'料','无坯件','')
SELECT XX.ORDERID,XX.ID,XX.FACTORS,XX.CAUSES,XX.DEPT_REMARK,
ISNULL(
(CASE XX.FACTORS WHEN NULL THEN '' ELSE XX.FACTORS END)+
(CASE XX.CAUSES WHEN NULL THEN '' ELSE '+'+XX.CAUSES END),'')+
ISNULL(XX.DEPT_REMARK,'')
FROM (
SELECT A.ORDERID,A.ID,
STUFF((SELECT DISTINCT (CASE B.FACTORS WHEN '' THEN '' ELSE '/'+B.FACTORS END) FROM #A B WHERE A.ORDERID = B.ORDERID AND A.ID = B.ID FOR XML PATH ('')),1,1,'') FACTORS,
STUFF((SELECT DISTINCT (CASE B.CAUSES WHEN '' THEN '' ELSE '/'+B.CAUSES END) FROM #A B WHERE A.ORDERID = B.ORDERID AND A.ID = B.ID FOR XML PATH ('')),1,1,'') CAUSES,
STUFF((SELECT DISTINCT (CASE B.DEPT_REMARK WHEN '' THEN '' ELSE '/'+B.DEPT_REMARK END) FROM #A B WHERE A.ORDERID = B.ORDERID AND A.ID = B.ID FOR XML PATH ('')),1,1,'') DEPT_REMARK
FROM #A A GROUP BY A.ORDERID,A.ID)XX
DROP TABLE #A
CREATE TABLE #A(
ORDERID INT,
ID INT,
FACTORS VARCHAR(20),
CAUSES VARCHAR(20),
DEPT_REMARK VARCHAR(20)
)
INSERT INTO #A VALUES (2021010701,1,'','','材料影响')
INSERT INTO #A VALUES (2021010701,1,'料','工装影响','')
INSERT INTO #A VALUES (2021010701,1,'人','缺人员','')
INSERT INTO #A VALUES (2021010702,1,'','','材料影响')
INSERT INTO #A VALUES (2021010702,2,'料','无坯件','')
SELECT XX.ORDERID,XX.ID,XX.FACTORS,XX.CAUSES,XX.DEPT_REMARK,
ISNULL(
(CASE XX.FACTORS WHEN NULL THEN '' ELSE XX.FACTORS END)+
(CASE XX.CAUSES WHEN NULL THEN '' ELSE '+'+XX.CAUSES END),'')+
ISNULL(XX.DEPT_REMARK,'')
FROM (
SELECT A.ORDERID,A.ID,
STUFF((SELECT (CASE B.FACTORS WHEN '' THEN '' ELSE '/'+B.FACTORS END) FROM #A B WHERE A.ORDERID = B.ORDERID AND A.ID = B.ID FOR XML PATH ('')),1,1,'') FACTORS,
STUFF((SELECT (CASE B.CAUSES WHEN '' THEN '' ELSE '/'+B.CAUSES END) FROM #A B WHERE A.ORDERID = B.ORDERID AND A.ID = B.ID FOR XML PATH ('')),1,1,'') CAUSES,
STUFF((SELECT (CASE B.DEPT_REMARK WHEN '' THEN '' ELSE '/'+B.DEPT_REMARK END) FROM #A B WHERE A.ORDERID = B.ORDERID AND A.ID = B.ID FOR XML PATH ('')),1,1,'') DEPT_REMARK
FROM #A A GROUP BY A.ORDERID,A.ID)XX
DROP TABLE #A