导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

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语句怎么写呢?谢谢各位了
...全文
7 点赞 收藏 15
写回复
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
darcymei 2003-12-13
那有没有侧重这方面的,我现在看的是sql server2000参考大全和sql server 2000开发者指南,但上面对基本语法讲得太少....
回复
没有具体讲某一方面的书.
回复
shuiniu 2003-12-13
关键字:书籍
搜索!
回复
darcymei 2003-12-13
真得非常感谢各位,最后一个问题?
我看的书很少有具体讲如何编写数据库函数和存储过程的,请各位大虾介绍几本!
不胜感激!!
回复
shuiniu 2003-12-13
这里的'表'名,'sno'这样字段名可以用参数传入吗?
---------------------------------
那样必需动态的执行!但函数不支持!
回复
针对不同的表需要写不同的聚合函数.因为函数不支持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类型的变量试过不可以
是不是针对不同的
回复
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 行)

--*/
回复
--上面写错了一个语句,改一下:

--创建一个合并的函数
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
回复
--创建一个合并的函数
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
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告