posts - 930,  comments - 588,  views - 402万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
      在SQL SERVER中,有时需要合多列值到行的需求,常见的方法有:1.创建自定义函数,2.使用游标法进行字符串合并。3.使用临

时表实现字符串合并。
     数据:

        DEPTNO EMPS
------ ----------
10 CLARK
10 KING
10 MILLER
20 SMITH
20 ADAMS
20 FORD
20 SCOTT
20 JONES
30 ALLEN
30 BLAKE
30 MARTIN
30 JAMES
30 TURNER
30 WARD


期望结果:

	 DEPTNO EMPS
------- ------------------------------------
10 CLARK,KING,MILLER
20 SMITH,JONES,SCOTT,ADAMS,FORD
30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES


   方法:
复制代码
-1.xmloutput---------------------------------------
--
http://wintersun.cnblogs.com
--
-------------------------------------------------
SELECT *
FROM(
    
SELECT DISTINCT 
        deptno
    
FROM emp
)A
OUTER APPLY(
    
SELECT 
        
[values]= STUFF(REPLACE(REPLACE(
            (
                
SELECT ENAME FROM emp N
                
WHERE deptno = A.deptno
                
FOR XML AUTO
            ), 
'<N ENAME="'','), '"/>'''), 11'')
)N

-2.---using CTE----------------------------------------
--
Creating a Delimited List from Table Rows
--
http://wintersun.cnblogs.com
--
-----------------------------------------------------
  with x (deptno, cnt, list, empno, len)
         
as (
     
select deptno, count(*over (partition by deptno),
            
cast(ename as varchar(100)),
            empno,
            
1
       
from emp
      
union all
     
select x.deptno, x.cnt,
            
cast(x.list + ',' + e.ename as varchar(100)),
            e.empno, x.
len+1
       
from emp e, x
     
where e.deptno = x.deptno
       
and e.empno > x. empno
                )
     
select deptno,list
       
from x
      
where len = cnt
      
order by 1

复制代码

测试的用的表与数据:
tableAndData

另说个题外话,之前想在SQL2005导入文本数据需要打SP2,后来直接用EMS.Data.Import.2007.for.SQL.Server完事,
软件体积才5M。

posted on   PetterLiu  阅读(12293)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示