--排序示例:
WITH a1 (msg) AS
(
SELECT '张三,李四,赵五'
)
,a2 AS
(
SELECT b.*
FROM (SELECT msg=CONVERT(XML, '<root><v>'+replace(RTRIM(LTRIM(msg)),',','</v><v>')+'</v></root>') FROM a1) a
OUTER APPLY (SELECT msg = C.v.value('.','NVARCHAR(MAX)') FROM a.msg.nodes('/root/v') C(v)) b
)
SELECT STUFF((SELECT ','+msg FROM a2 ORDER BY 1 FOR XML PATH('')),1,1,'')

解决方案 »

  1.   

    ;WITH CTE AS(
    SELECT ROW_NUMBER()OVER(ORDER BY GETDATE())ID,作者姓名 FROM TB
    )
    ,CTE2 AS(
    SELECT ID,作者姓名,V FROM
    (SELECT ID,作者姓名,CAST('<V>'+REPLACE(作者姓名,',','</V><V>')+'</V>'AS XML)VS FROM CTE)T1
    CROSS APPLY(SELECT N.V.value('.','VARCHAR(100)')V FROM T1.VS.nodes('/V')N(V))T2
    )
    ,CTE3 AS(
    SELECT ID,作者姓名
    ,STUFF((SELECT ','+V FROM CTE2 T2 WHERE T1.ID=T2.ID ORDER BY V FOR XML PATH('')),1,1,'')V
    FROM CTE T1
    )
    SELECT 作者姓名 FROM(
    SELECT *,COUNT(1)OVER(PARTITION BY 作者姓名)C1
    ,COUNT(1)OVER(PARTITION BY V)C2
    FROM CTE3
    )T
    WHERE C1=1 AND C2>1
      

  2.   

     SELECT ID,作者姓名,V FROM   name