自定义函数+一句就可以否则一条sql语句不能实现
sql语句的条数与实际数据处理的效率没有直接关系.
sql语句的条数与实际数据处理的效率没有直接关系.
解决方案 »
- 求助关于SQL trigger中计算字段的处理
- 修改表中一个字段的固定字符
- 数据导入问题
- 如何将来自两张表的两个字段的值放到一个字段里显示?如果有重复的数据就不显示。
- 请教各位两个触发器的写法
- 开头的 标识符 太长。最大长度为 128。的限制问题 求助
- 用T-sql语句可以直接导入导出xls文件,请问这些语句用在Access上是否同理也可以实现!
- 关于查看SQLServer的日志文件
- 愁死我了,大家帮忙看看MSSQL2005的难题
- 数据库还原--故障点恢复
- 请问各位大哥:新闻的主题部分用什么数据类型好呢?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
--*/