读书人

高手很小弟我很

发布时间: 2012-01-02 22:40:04 作者: rapoo

高手很,我很的,教大家…
表1:
=====================
姓名 去的地方
三 a,b,h
李四 i,e,c,b
=====================

表2:
=====================
代 地方名
a 上海
b 北京
c 成都
d 沙
e 深圳
i 州
h 香港
=====================

我要一SQL句,得出果:
=================================
姓名 去的地方
三 上海,北京,香港
李四 州,深圳,成都,北京
=================================

多了!有的50分送你!!!



[解决办法]
jf
[解决办法]
表1:
=====================
姓名 去的地方
三 a,b,h
李四 i,e,c,b
=====================

不符合范式哦
[解决办法]
create table t1(n varchar(10),p nvarchar(30))
insert t1
select N '三 ', 'a,b,h '
union select N '李四 ', 'i,e,c,b '


create table t2(code varchar(10),n1 nvarchar(30))
insert t2
select 'a ' , '上海 '
union select 'b ' , N '北京 '
union select 'c ' , N '成都 '
union select 'd ' , N '沙 '
union select 'e ' , N '深圳 '
union select 'i ' , N '州 '
union select 'h ' , N '香港 '

select n,dbo.tf(p) from t1

create function tf(@id varchar(30))
returns varchar(1000)
as
begin
declare @str varchar(1000)

set @str= ' '
select @str=@str+ ', '+n1 from t2 where charindex(code,@id)> 0
set @str=stuff(@str,1,1, ' ')
return @str
end

drop function tf
drop table t1,t2

[解决办法]
create table t1(n varchar(10),p nvarchar(30))
insert t1
select N '三 ', 'a,b,h '
union select N '李四 ', 'i,e,c,b '


create table t2(code varchar(10),n1 nvarchar(30))
insert t2
select 'a ' , '上海 '
union select 'b ' , N '北京 '
union select 'c ' , N '成都 '
union select 'd ' , N '沙 '
union select 'e ' , N '深圳 '
union select 'i ' , N '州 '
union select 'h ' , N '香港 '


go

create function tf(@id varchar(30))
returns nvarchar(1000)
as
begin
declare @str varchar(1000)

set @str= ' '
select @str=@str+ ', '+n1 from t2 where charindex(code,@id)> 0
set @str=stuff(@str,1,1, ' ')
return @str
end

go

select n,p=dbo.tf(p) from t1

drop function tf
drop table t1,t2

/*


n p
----- --------
李四 北京,成都,深?,州
三 上海,北京,香港
*/

[解决办法]
declare @tousers char(50)
create table table1 (ItemID char(1),ToUsers char(100))
create table table2 (myitemid char(1),MyToUsers char(20))
CREATE TABLE TABLE3(MYTOUSERS CHAR(20),MYNAME CHAR(10))
insert into table1 select '2 ', 'A,B,H ' union select '3 ', 'I,E,C,B '
INSERT INTO TABLE3 SELECT 'A ', '上海 ' UNION SELECT 'B ', '北京 '
UNION SELECT 'C ', '成都 ' UNION SELECT 'D ', '沙 '
UNION SELECT 'E ', '深圳 ' UNION SELECT 'I ', '州 '
UNION SELECT 'H ', '香港 '

declare @sql varchar(8000)
set @sql= ' '
select @sql=@SQL+ 'select '+cast(ItemID as varchar)+ ', ' ' '+replace(ToUsers, ', ', ' ' ' union all select '+cast(ItemID as varchar)+ ', ' ' ')+ ' ' ' union all '
from table1

select @ToUsers=tousers from table1
--select 'select '+ '2, ' ' '+replace( 'zhangsan,lisi,wangwu ', ', ', ' ' ' union all select '+ '2, ' ' ')+ ' ' ' '

--select @sql

set @sql=left(@sql,len(@sql)-10)

exec( 'insert table2 '+@sql)

select * from table2

SELECT myitemid,myname into b from table2 a left join table3 b on a.mytousers=b.mytousers
GO
Create Function F_GetRole(@ID char(1))
Returns Nvarchar(2000)
As
Begin
Declare @S Nvarchar(2000)
Select @S = ' '
Select @S = @S + ', ' + RTRIM(myname) From B Where MYITEMID = @ID
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End
GO
Select
myitemid,
dbo.F_GetRole(myitemid) As Role
From
b GROUP BY MYITEMID
GO
drop table table1
drop table table2
DROP TABLE TABLE3
Drop Function F_GetRole
DROP TABLE B

读书人网 >SQL Server

热点推荐