没有测试,没有考虑效率:craete function f_AccounName(@account_no varchar(200))
returns varchar(2000)
as
begin
declare @t varchar(2000)
declare @PARENT_ACCOUNT varchar(200)
set @t=''
set @PARENT_ACCOUNT=''
select @t=ACCOUNT_NAME,@PARENT_ACCOUNT=PARENT_ACCOUNT from a
where @account_no=account_no
if @PARENT_ACCOUNT='' or @PARENT_ACCOUNT is null
set @t=dbo.f_AccounName(@PARENT_ACCOUNT)+'/'+@t
return @t
end
go
returns varchar(2000)
as
begin
declare @t varchar(2000)
declare @PARENT_ACCOUNT varchar(200)
set @t=''
set @PARENT_ACCOUNT=''
select @t=ACCOUNT_NAME,@PARENT_ACCOUNT=PARENT_ACCOUNT from a
where @account_no=account_no
if @PARENT_ACCOUNT='' or @PARENT_ACCOUNT is null
set @t=dbo.f_AccounName(@PARENT_ACCOUNT)+'/'+@t
return @t
end
go
解决方案 »
- 这个SQL怎么写?
- 查询统计问题?
- 一个不会的SQL server的题目
- 如何实现这样的SQL语句,向大家请教?
- zjcxc(: 邹建 :) 大哥在进来帮帮小弟,我按着你刚才给的SQL语句写这个,提示说数据库错啊
- 關於存儲過程的執行錯誤,怎麼把撤消已執行的語句影響?? 謝謝!!
- SQL Server 怎么安装不上去?
- 请问各位大侠VB开发数据库怎样连接ACCESS2000数据库啊?? 谢谢
- 求SQL语句
- sql 将 varchar 值转换为数据类型为 int 的列时发生语法错误
- 利用bcp备份比自己写一条条select语句备份,执行起来速度会快吗?
- 各位SQL的高手,帮我看看我写的ACCESS 2000的数据类型是否正确呢???
@account_no varchar(32)
)
returns varchar(400)
as
begin
declare @is_no varchar(32)
declare @s varchar(400)
set @is_no = @account_no
set @s=''
while isnull((select LAYER_LEVEL from a where account_no = @is_no),1) > 1
--while (select parent_account from a where account_no=@is_no)<>'' or (select parent_account from a where account_no=@is_no) is not null
begin
select @is_no = parent_account ,@s=@s+account_name from a where account_no = @is_no
set @s=@s+'/'
end
if (select layer_level from a where account_no=@is_no)=1
select @s=@s+account_name from a where account_no=@is_no
return(@s)
end
可得到的结果有差异:
select account_no,f_AccountName(account_no) as name from a
account_no name
1001 现金
1002 银行存款
100201 工行存款/银行存款
100202 农行存款/银行存款
2171 应交税金
217101 应交增值税/应交税金
21710102 已交税金/应交增值税/应交税金
........
select @is_no = parent_account ,@s=@s+account_name from a where account_no = @is_no
set @s=@s+'/'
end--〉begin
select @is_no = parent_account ,@s=account_name+'/'+@s from a where account_no = @is_no
end
我马上结贴。