简单问题,但我不会诶:(请教各位

darcymei 2003-12-12 11:06:22
sno cno
001 001
001 002
001 003
我想生成一张视图
sno cno
001 001 002 003
就是把sno相等的纪录的cno字段合在一起,形成新的纪录,cno字段是char型的。
请问select语句怎么写呢?谢谢各位了
...全文
27 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
darcymei 2003-12-13
那有没有侧重这方面的,我现在看的是sql server2000参考大全和sql server 2000开发者指南,但上面对基本语法讲得太少....
  • 打赏
  • 举报
回复
zjcxc 元老 2003-12-13
没有具体讲某一方面的书.
  • 打赏
  • 举报
回复
shuiniu 2003-12-13
关键字:书籍
搜索!
  • 打赏
  • 举报
回复
darcymei 2003-12-13
真得非常感谢各位,最后一个问题?
我看的书很少有具体讲如何编写数据库函数和存储过程的,请各位大虾介绍几本!
不胜感激!!
  • 打赏
  • 举报
回复
shuiniu 2003-12-13
这里的'表'名,'sno'这样字段名可以用参数传入吗?
---------------------------------
那样必需动态的执行!但函数不支持!
  • 打赏
  • 举报
回复
zjcxc 元老 2003-12-13
针对不同的表需要写不同的聚合函数.因为函数不支持execute
  • 打赏
  • 举报
回复
darcymei 2003-12-13
sorry,没写完整
是不是针对不同的表要完成这样的功能就要写不同的聚合函数呢?谢谢了
  • 打赏
  • 举报
回复
darcymei 2003-12-13
谢谢各位星星们,偶还想再问一下
create function f_merg(@sno varchar(3))
returns varchar(8000)
as
begin
declare @re varchar(8000)
set @re=''
select @re=@re+' '+rtrim(cno) from 表 where sno=@sno
set @re=substring(@re,2,8000)
return(@re)
end
这里的'表'名,'sno'这样字段名可以用参数传入吗?
我用varchar类型的变量试过不可以
是不是针对不同的
  • 打赏
  • 举报
回复
zjcxc 元老 2003-12-12
create table 表(sno char(3),cno char(3))
insert into 表
select '001','001'
union all select '001','002'
union all select '001','003'

go

--创建一个合并的函数
create function f_merg(@sno varchar(3))
returns varchar(8000)
as
begin
declare @re varchar(8000)
set @re=''
select @re=@re+' '+rtrim(cno) from 表 where sno=@sno
set @re=substring(@re,2,8000)
return(@re)
end
go

--调用这个自定义函数来实现你的要求
select sno,cno=dbo.f_merg(sno) from 表 group by sno
go
drop table 表
drop function f_merg

/*--测试结果
sno cno
---- --------------
001 001 002 003

(所影响的行数为 1 行)

--*/
  • 打赏
  • 举报
回复
zjcxc 元老 2003-12-12
--上面写错了一个语句,改一下:

--创建一个合并的函数
create function f_merg(@sno varchar(3))
returns varchar(8000)
as
begin
declare @re varchar(8000)
set @re=''
select @re=@re+' '+rtrim(cno) from 表 where sno=@sno
set @re=substring(@re,2,8000)
return(@re)
end
go

--调用这个自定义函数来实现你的要求
select sno,cno=dbo.f_merg(sno) from 表 group by sno
  • 打赏
  • 举报
回复
zjcxc 元老 2003-12-12
--创建一个合并的函数
create function f_merg(@sno varchar(3))
returns varchar(8000)
as
begin
declare @re varchar(8000)
set @re=''
select @re=@re+' '+rtrim(cno) from 表 where sno=@sno
set @re=substring(@re,2,8000)
retrun(@re)
end
go

--调用这个自定义函数来实现你的要求
select sno,cno=dbo.f_merg(sno) from 表 group by sno
  • 打赏
  • 举报
回复
txlicenhe 2003-12-12
http://expert.csdn.net/Expert/topic/2440/2440306.xml?temp=.6941645
[交流]行列转换
  • 打赏
  • 举报
回复
txlicenhe 2003-12-12


--1.创建一个合并的函数
create function fmerg(@id char(3))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+' '+cno from 表A where sno=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go

--调用自定义函数得到结果
select distinct sno,dbo.fmerg(sno) as cno from 表A
  • 打赏
  • 举报
回复
hdvcd 2003-12-12
学习学习
  • 打赏
  • 举报
回复
ghosthjt 2003-12-12
http://expert.csdn.net/Expert/topic/2440/2440306.xml?temp=.6941645
[交流]行列转换
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2003-12-12 11:06
社区公告
暂无公告