如何实现多行转一行

iamltd 2007-06-05 08:04:41
原始数据是这样的
field1 field2
1 a
1 b
1 d
2 c
2 a


我要获得这样的结果
field1 field2
1 a_b_d
2 c_a
在field2里面的顺序无所谓,不重复就可以了。


请各位大大帮忙。thx
...全文
385 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwqjamky 2007-06-06
  • 打赏
  • 举报
回复
以上是用单条语句执行的
xwqjamky 2007-06-06
  • 打赏
  • 举报
回复
SELECT field1,
field2=CAST(MIN(field2) as varchar)
+CASE
WHEN COUNT(*)=3 THEN ','
+CAST((SELECT field2 FROM tb WHERE field1=a.field1 AND field2 NOT IN(MAX(a.field2),MIN(a.field2))) as varchar)
ELSE ''
END
+CASE
WHEN COUNT(*)>=2 THEN ','+CAST(MAX(field2) as varchar)
ELSE ''
END
FROM tb a
GROUP BY field1
xwqjamky 2007-06-06
  • 打赏
  • 举报
回复
SELECT field1,
field2=CAST(MIN(field2) as varchar)
+CASE
WHEN COUNT(*)=1 THEN ''
ELSE ','+CAST(MAX(field2) as varchar)
END
FROM tb
GROUP BY field1
neusoft_zt 2007-06-06
  • 打赏
  • 举报
回复
这种方式根本行不通
iamltd 2007-06-06
  • 打赏
  • 举报
回复
楼上这个办法限制太死了吧。万一我记录很多很多,怎么办?
neusoft_zt 2007-06-05
  • 打赏
  • 举报
回复
您找到解决办法贴出来我也学习学习,谢谢
iamltd 2007-06-05
  • 打赏
  • 举报
回复
呵呵,毕竟单句SQL的适用范围广的多了。用存储过程调用会很麻烦。

另外,从效率来说,不考虑SQL语句本身写的很垃圾的情况下,存储过程绝对比SQL语句效率低。
neusoft_zt 2007-06-05
  • 打赏
  • 举报
回复
其实存储只是sql语句的组合而已本身如果sql很复杂那用存储过程还是单条sql又有什么分别呢
neusoft_zt 2007-06-05
  • 打赏
  • 举报
回复
用存储过程和一条语句实现效率不会有很大差别
bill024 2007-06-05
  • 打赏
  • 举报
回复
晕,题目没看你说用一条!!!!
估计没法做到
iamltd 2007-06-05
  • 打赏
  • 举报
回复
我现在就是想要一句SQL完成。用存储过程或者函数会很担心效率的问题。因为数据量太大了点,唉
bill024 2007-06-05
  • 打赏
  • 举报
回复
field1
----------- -----------
1 a_b_d
2 c_a
bill024 2007-06-05
  • 打赏
  • 举报
回复
create function dbo.fn_Merge(@field varchar(1000))
returns varchar(8000)
as
begin
declare @name varchar(8000)
set @name=''
select @name=@name+'_'+field2 from test where field1=@field
return stuff(@name,1,1,'')
end
go

create table test(field1 int,field2 varchar(10))
insert test select 1,'a'
union all select 1,'b'
union all select 1,'d'
union all select 2,'c'
union all select 2,'a'

select distinct field1,dbo.fn_Merge(field1) from test
neusoft_zt 2007-06-05
  • 打赏
  • 举报
回复
你这个需求一条sql应该搞不出来,用存储过程实现

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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