【发布时间】:2011-05-08 09:24:42
【问题描述】:
我的表结构如下
ID MName FName
1 Sunil Sachin
2 Sunil Sanjay
3 Sunil Wasim
4 Greg Ricky
5 Ian Mark
我希望查询返回
1 Sunil Sachin, Sanjay, Wasim
2 Sunil Sachin, Sanjay, Wasim
3 Sunil Sachin, Sanjay, Wasim
4 Greg Ricky
5 Ian Mark
【问题讨论】:
-
为什么首先需要一个光标?
-
为什么要重复第一行三次?
-
数据已经在生产中。需要在 SQL Server 中生成报告。我知道如何使用 CURSOR 和 COALESCE 来获得它。但这很昂贵。有没有一种优雅的方式来做同样的事情?
-
您的查询到底在做什么?我的意思是这里的逻辑是什么?您可以使用 CURSOR 发布您的解决方案吗
-
select Data.ID, Data.MName, Names.FNames from Data join (select MName, left(names, len(names) - 1) as FNames from Data as extern cross apply (select FName + ', ' from Data as intertern where extern.MName = intern.MName for xml path('') ) pre_trimmed (names) group by MName, names ) Names ON Data.MName = Names.MName order by Data.ID
标签: sql-server cursor