求SQL 语句一条,顶者有分~~

windykuang 2006-12-10 09:57:19

id name1 name2 name3 name4 name5


实现

1 name1
2 name2
3 name3
4 name4
5 name5

这样输出
...全文
243 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
windykuang 2006-12-14
  • 打赏
  • 举报
回复
感谢!! 结帖了......
laoliu666 2006-12-11
  • 打赏
  • 举报
回复
qq
braveman7 2006-12-11
  • 打赏
  • 举报
回复
关注ing
cnhzlyg 2006-12-11
  • 打赏
  • 举报
回复
caixia615 2006-12-11
  • 打赏
  • 举报
回复
电点星灯的LZ稍微改下就OK了的
b1688890284 2006-12-11
  • 打赏
  • 举报
回复
UP
点点星灯 2006-12-11
  • 打赏
  • 举报
回复
借助用户定义函数:
---------------------------------------------------------------------
--生成测试数据
create table 表(部门 int,人员 varchar(20))
insert into 表 select 1,'张三'
insert into 表 select 1,'李四'
insert into 表 select 1,'王五'
insert into 表 select 2,'赵六'
insert into 表 select 2,'邓七'
insert into 表 select 2,'刘八'
go

--创建用户定义函数
create function f_str(@department int)
returns varchar(8000)
as
begin
declare @ret varchar(8000)
set @ret = ''
select @ret = @ret+','+人员 from 表 where 部门 = @department
set @ret = stuff(@ret,1,1,'')
return @ret
end
go


--执行
select 部门,人员=dbo.f_str(部门) from 表 group by 部门 order by 部门
go

--输出结果
/*
部门 人员
---- --------------
1 张三,李四,王五
2 赵六,邓七,刘八
*/


--删除测试数据
drop function f_str
drop table 表
go



--楼主,你说的是这种吗?
stou 2006-12-11
  • 打赏
  • 举报
回复
up
wendyc 2006-12-11
  • 打赏
  • 举报
回复
ding
jackeyabc 2006-12-10
  • 打赏
  • 举报
回复
aw511(点点星灯)已经写的很棒了~~~~~``

可以去试一下
xiao_deng 2006-12-10
  • 打赏
  • 举报
回复
mark
tallen2005 2006-12-10
  • 打赏
  • 举报
回复
select [name] from (
select [name]=name1 from t1 where id="001"
union
select [name]=name2 from t1 where id="001"
union
select [name]=name3 from t1 where id="001"
union
select [name]=name4 from t1 where id="001"
union
select [name]=name5 from t1 where id="001"
) tt
mugua604 2006-12-10
  • 打赏
  • 举报
回复
....................
点点星灯 2006-12-10
  • 打赏
  • 举报
回复
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
/*--实现split功能 的函数
--date :2005-4-20
--Author :Domino
*/
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end


select * from dbo.f_split('山东:济南:山东:济南',':')
a417036788 2006-12-10
  • 打赏
  • 举报
回复
dawugui 2006-12-10
  • 打赏
  • 举报
回复
union all

select id , name1 as name from tb
union all
select id , name2 as name from tb
union all
select id , name3 as name from tb
union all
select id , name4 as name from tb
union all
select id , name5 as name from tb
marco08 2006-12-10
  • 打赏
  • 举报
回复
学习+接分

34,594

社区成员

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

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