[sql server] 问题总结2 - 递归
来源:互联网 发布:网络推广员小说 编辑:程序博客网 时间:2024/06/15 05:27
tab1
id kindnum kindname
1 001 男装
2 001001 上衣
3 001002 裤类
4 001001001 西装
5 002 女装
6 001001002 风衣
7 002001 帽
8 002002 上衣
9 002003 裙
我现在想实现查询出来的显示结果如下:
id kindnum kindname full_kindname
1 001 男装 男装
2 001001 上衣 男装-上衣
3 001002 裤类 男装-裤类
4 001001001 西装 男装-上衣-西装
6 001001002 风衣 男装-裤类-风衣
5 002 女装 女装
7 002001 帽 女装-帽
8 002002 上衣 女装-上衣
9 002003 裙 女装-裙
如何写这个SQL语句呢?
——————————————————————————————
if object_id('[tab1]') is not null drop table [tab1]
go
create table [tab1]([id ] int,kindnum varchar(20),kindname varchar(20))
insert [tab1]
select 1 ,'001', '男装' union all
select 2 ,'001001', '上衣' union all
select 3 ,'001002', '裤类' union all
select 4 ,'001001001', '西装' union all
select 5 ,'002', '女装' union all
select 6 ,'001001002', '风衣' union all
select 7 ,'002001', '帽' union all
select 8 ,'002002', '上衣' union all
select 9 ,'002003', '裙'
go
if object_id('f_getk') is not null drop function f_getk
create function f_getk(@kindname varchar(20))
returns varchar(100)
as
begin
declare @k_full varchar(300)
declare @i int
set @i =1
while len(@kindname)>= 3*@i
begin
select @k_full=isnull(@k_full+'-','')+kindname from tab1 where kindnum = left(@kindname,3*@i)
set @i = @i+1
end
return @k_full
end
select * ,dbo.f_getk(kindnum) as 'full_kname' from tab1
- [sql server] 问题总结2 - 递归
- SQL Server 高频问题总结
- SQL Server 高频问题总结
- SQL Server还原问题总结
- SQL Server触发器问题总结
- SQL Server还原问题总结
- SQL Server备份问题总结
- SQL Server触发器问题总结
- SQL Server触发器问题总结
- SQL Server 高频问题总结
- SQL Server触发器问题总结
- sql server行转列问题总结
- sql server 性能问题总结
- [sql server] 行转列问题总结 - 2、列转行
- SQL Server 递归查询
- sql server 递归查询
- SQL SERVER 递归 CTE
- sql server 递归查询
- Ubuntu下搭建TQ2440的程序下载环境
- (转)用tree命令查看某一目录下的文件结构
- 博客
- cygwin很多命令显示command not found的解决办法
- 怎么在这里将我上传的资源全部删除掉?
- [sql server] 问题总结2 - 递归
- 杯具啦。~.~
- 一个简单的makefile示例及其注释
- 主流报表制作工具之王者争夺战:功能大PK系列之图表数据源
- regexp -line逐行匹配
- 单击Button 更改屏幕方向
- 《戒子训》 诸葛亮
- 并发,批
- 内核注入