--排序示例:
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,'')
解决方案 »
- 老师出的一个查询语句,不会做求解答
- SQL Server2005 联通丛书中的一个错误 你们发现了吗?
- 查询问题,有请 zjcxc,libin_ftsafe,paluo.......
- 关于SQL数据文件增长很快的疑问
- 关于索引的问题与讨论
- 先进先出,请教sql写法!
- SQL Server Configuration Manager打不开了,mmc错误
- 问题还未解决,高手再进…………
- Sql Server为何调用当前用户定义的函数还要用户名.表名???
- 请教,将一个数据表用ADO存为XML文件后,能否对XML文件中的记录进行分析汇总 ?
- sql根据条件将数据累加并存储到临时表
- Sql视图语句,用字段值作为视图字段的查询
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