自定义函数+一句就可以否则一条sql语句不能实现
sql语句的条数与实际数据处理的效率没有直接关系.
sql语句的条数与实际数据处理的效率没有直接关系.
解决方案 »
- 运行代码,出现如下错误提示,为什么?
- SQL的小问题(查询传参数的问题)
- 在线等,分析一条SQL语句!!
- WIN2003的操作系统,远程连接SQL是不是要先本地登陆一次???????
- 求数据库脚本大神,增加列查询
- 急求sql server 6.5下载地址
- 按多字段排序
- VC+SQL SERVER,你认为是一个好的组合吗?!(很诚恳地征求你的看法!!!)
- 请教:如何在一个存储过程里用语句动态的创建一个job,执行另外一个存储过程?
- codefirst迁移数据库的时候报错
- 请问各位大哥:新闻的主题部分用什么数据类型好呢?varchar?text? 谢谢!
- 请问怎么在程序中怎么得到表中某一特定行的某个字段的值?
@f1 varchar(10)
)returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+f2 from tbname where f1=@f1
return(stuff(@r,1,1,''))
endselect f1,f2=dbo.f_str(f1) from tbname group by f1
Create Function f_1(varchar(10))
returns varchar(1000)
as
begin
declare @str varchar(1000)
set @str = ''
select @str = @str + ',' + F2 from YouTable where F1 = @F1
set @str = right(@str,len(@str) - 1)
return @strend
go
--查询
select F1,dbo.f_1(F1) from YouTable
(f1 varchar (5),f2 varchar (5))insert into ff
select 'a','c' union
select 'a','d' union
select 'a','e' union
select 'b','f' union
select 'b','g' union
select 'b','h'create function f_str(
@f1 varchar(10)
)returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+f2 from ff where f1=@f1
return(stuff(@r,1,1,''))
endselect f1,f2=dbo.f_str(f1) from ff group by f1f1 f2
-- -----
a c,d,e
b f,g,h
--用一条sql语句实现(实际是没有一条sql语句实现的,这里是取巧)
exec('set nocount on
select f1,f2=cast(f2 as varchar(8000)) into #t from tb order by f1
declare @f1 varchar(10),@r varchar(8000)
update #t set @r=case f1 when @f1 then @r+'',''+f2 else f2 end,f2=@r,@f1=f1
select F1,F2=max(f2) from #t group by f1
')
create table tb(F1 varchar(10),F2 varchar(10))
insert tb select 'a','c'
union all select 'a','d'
union all select 'a','e'
union all select 'b','f'
union all select 'b','g'
union all select 'b','h'
go--用一条sql语句实现(实际是没有一条sql语句实现的,这里是取巧)
exec('set nocount on
select f1,f2=cast(f2 as varchar(8000)) into #t from tb order by f1
declare @f1 varchar(10),@r varchar(8000)
update #t set @r=case f1 when @f1 then @r+'',''+f2 else f2 end,f2=@r,@f1=f1
select F1,F2=max(f2) from #t group by f1
')
go--删除测试
drop table tb/*--测试结果F1 F2
---------- -------------------
a c,d,e
b f,g,h
--*/