怎样合并表中的字段

yaganblw 2012-12-31 05:48:02
ID CID Desc
1 2 西瓜
2 3 萝卜
3 3 芹菜
4 2 苹果
5 1 豆腐
6 2 葡萄

需求:我要获得所有CID=2的水果
数据在一处显示,逗号隔开,如我喜欢的水果有:西瓜,苹果,葡萄

2012最后一天,大牛给力。
...全文
228 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaganblw 2013-01-02
  • 打赏
  • 举报
回复
ljr_aa 2013-01-02
  • 打赏
  • 举报
回复
1、在前台处理好,以后查询就快很多。 2、可以用自定义函数。 3、查询语句 --sql2005 SELECT clid,STUFF((SELECT ','+[Desc] FROM ##test WHERE clid=a.clid FOR XML PATH('')),1,1,'') FROM ##test AS a GROUP BY clid --sql2000 Declare @Deli VarChar(1) Set @deli='; ' Declare @result varchar(1000) select @result=isnull(@result+@deli,'')+rtrim([Desc]) from ##test where clid='2' group by [Desc] select @result
dodolzc10 2013-01-02
  • 打赏
  • 举报
回复
3楼正解!!
习惯性蹭分 2013-01-02
  • 打赏
  • 举报
回复

if OBJECT_ID('test')is not null
drop table test
go 
create table test(id int,clid int,[desc] varchar(20))
insert into test
select 1,    2,    '西瓜' union all
select 2,    3,    '萝卜' union all
select 3,    3,    '芹菜' union all
select 4,    2,   '苹果' union all
select 5,    1,    '豆腐' union all
select 6,    2,   '葡萄' 
declare @val varchar(max)
select @val=ISNULL(@val+',','')+[desc] from test where clid=2
select @val
longai123 2013-01-02
  • 打赏
  • 举报
回复
select b.[cid],left(StuList,len(StuList)-1)as tb from (
SELECT [cid],
(SELECT [desc]+',' FROM tb 
  WHERE [cid]=a.[cid] 
  FOR XML PATH('')) AS StuList
FROM tb A 
GROUP BY cid
) B 
naochen 2013-01-02
  • 打赏
  • 举报
回复
弄的好复杂,在前台处理就很方便
  • 打赏
  • 举报
回复
select stuff((select ','+[desc] from tb where cid=2 for xml path('')),1,1,'')
波西米亚人生 2013-01-02
  • 打赏
  • 举报
回复
用pivot也可以实现 http://www.cnblogs.com/zhangzt/archive/2010/07/29/1787825.html
波西米亚人生 2013-01-02
  • 打赏
  • 举报
回复
常用 的一般都是通过游标处理
szm341 2012-12-31
  • 打赏
  • 举报
回复

select cid,stuff((select ','+[desc] from table where a.cid=cid for xml path('')),1,1,'')
from table as a where cid=2
group by cid
适用sql2005及以上版本
知识青年 2012-12-31
  • 打赏
  • 举报
回复
--> 测试数据:#tb IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb GO CREATE TABLE #tb([ID] INT,[CID] INT,[Desc] VARCHAR(4)) INSERT #tb SELECT 1,2,'西瓜' UNION ALL SELECT 2,3,'萝卜' UNION ALL SELECT 3,3,'芹菜' UNION ALL SELECT 4,2,'苹果' UNION ALL SELECT 5,1,'豆腐' UNION ALL SELECT 6,2,'葡萄' --------------开始查询-------------------------- SELECT [CID],STUFF((SELECT ','+[Desc] FROM #tb WHERE [CID]=a.[CID] FOR XML PATH('')),1,1,'') FROM #tb AS a GROUP BY [CID] ----------------结果---------------------------- /* CID (无列名) 1 豆腐 2 西瓜,苹果,葡萄 3 萝卜,芹菜 */
ChinaITOldMan 2012-12-31
  • 打赏
  • 举报
回复
cursor is ok for this issue
yaganblw 2012-12-31
  • 打赏
  • 举报
回复
是说要用到游标吗?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧