您的位置:首页 > 其它

应用场景:将员工不同的职位合并到同一列

2010-09-03 13:48 211 查看
/*

应用场景:将员工不同的职位合并到同一列

*/

IF OBJECT_ID('A') IS NOT NULL

DROP TABLE A

GO

CREATE TABLE A

(

NAME VARCHAR(20),

STATU VARCHAR(50)

)

GO

INSERT INTO A

SELECT '小张','普通员工'

UNION ALL

SELECT '小张','组长'

UNION ALL

SELECT '小二','经理'

UNION ALL

SELECT '小三','老板'

UNION ALL

SELECT '小三','员工'

GO

--方法一

SELECT DISTINCT NAME,STATUS=RIGHT(STATUS,LEN(STATUS)-1)

FROM

(

SELECT *,

STATUS=(SELECT ','+LTRIM(STATU) FROM A WHERE NAME=T.NAME FOR XML PATH(''))

FROM A T

) A

GO

--方法二

CREATE TABLE #A

(

ID INT IDENTITY(1,1),

NAME VARCHAR(20),

STATU1 VARCHAR(50),

STATU2 VARCHAR(50)

)

GO

INSERT INTO #A(NAME,STATU1,STATU2)

SELECT NAME,STATU1=STATU,STATU2=(SELECT STATU FROM A WHERE NAME=C.NAME AND STATU<>C.STATU)

FROM A C

GO

SELECT NAME,STATU1+CASE WHEN STATU2 IS NULL THEN '' ELSE ','+STATU2 END

FROM #A C

WHERE NOT EXISTS(SELECT * FROM #A WHERE ID<C.ID AND NAME=C.NAME AND STATU1=C.STATU2 AND STATU2=C.STATU1)

GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: