sqlserver2000中的表结构如下,各字段均为字符类型:
名称 类型 编号
广西 旱地 034/034
广西 旱地 039/033
广西 菜地 034/039
湖北 耕地 434/021
湖北 耕地 3224/021
北京 草地 4332/051
北京 水库 132/051
北京 水库 102/051
想实现如下查询结果:
名 称 类 型 编 号
广西 旱地,菜地 034/034,039/033,034/039
湖北 耕地 434/021,3224/021
北京 草地,水库 4332/051,132/051,102/051
-- =========================================
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb(名称 varchar(10),类型 varchar(10),编号 varchar(20))
go
insert into tb
select
'广西', '旱地', '034/034' union all select
'广西' , '旱地' ,'039/033' union all select
'广西', '菜地' ,'034/039' union all select
'湖北' , '耕地' , '434/021' union all select
'湖北' , '耕地' , '3224/021' union all select
'北京' , '草地' , '4332/05' union all select
'北京' , '水库' , '132/051' union all select
'北京' , '水库' , '102/051'
go
create function kkk1(@mingcheng varchar(10))
returns varchar(100)
as
begin
declare @s varchar(100)
set @s=''
select @s=@s+','+编号 from tb where 名称=@mingcheng
return stuff(@s,1,1,'')
end
create function kkk2(@mingcheng varchar(10))
returns varchar(100)
as
begin
declare @ss varchar(100)
set @ss=''
select @ss=@ss+','+类型 from (select distinct 名称,类型 from tb ) t
where 名称=@mingcheng
group by 类型
return stuff(@ss,1,1,'')
end
go
select 名称,dbo.kkk2(名称) as 类型,dbo.kkk1(名称) as 编号
from tb
group by 名称
/*
北京 草地,水库 4332/05,132/051,102/051
广西 菜地,旱地 034/034,039/033,034/039
湖北 耕地 434/021,3224/021
*/
/*------------
-------*/
名称 类型 编号
广西 旱地 034/034
广西 旱地 039/033
广西 菜地 034/039
湖北 耕地 434/021
湖北 耕地 3224/021
北京 草地 4332/051
北京 水库 132/051
北京 水库 102/051
想实现如下查询结果:
名 称 类 型 编 号
广西 旱地,菜地 034/034,039/033,034/039
湖北 耕地 434/021,3224/021
北京 草地,水库 4332/051,132/051,102/051
-- =========================================
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb(名称 varchar(10),类型 varchar(10),编号 varchar(20))
go
insert into tb
select
'广西', '旱地', '034/034' union all select
'广西' , '旱地' ,'039/033' union all select
'广西', '菜地' ,'034/039' union all select
'湖北' , '耕地' , '434/021' union all select
'湖北' , '耕地' , '3224/021' union all select
'北京' , '草地' , '4332/05' union all select
'北京' , '水库' , '132/051' union all select
'北京' , '水库' , '102/051'
go
create function kkk1(@mingcheng varchar(10))
returns varchar(100)
as
begin
declare @s varchar(100)
set @s=''
select @s=@s+','+编号 from tb where 名称=@mingcheng
return stuff(@s,1,1,'')
end
create function kkk2(@mingcheng varchar(10))
returns varchar(100)
as
begin
declare @ss varchar(100)
set @ss=''
select @ss=@ss+','+类型 from (select distinct 名称,类型 from tb ) t
where 名称=@mingcheng
group by 类型
return stuff(@ss,1,1,'')
end
go
select 名称,dbo.kkk2(名称) as 类型,dbo.kkk1(名称) as 编号
from tb
group by 名称
/*
北京 草地,水库 4332/05,132/051,102/051
广西 菜地,旱地 034/034,039/033,034/039
湖北 耕地 434/021,3224/021
*/
/*------------
-------*/