select t1.编码,t2.名称 名称1,t3.名称 名称2 from tb1 t1 left jion tb2 t2 on t1.编码=t2.编码 left jion tb2 t3 on t1.编码=t3.编码
create table 表1 ( 编码 varchar(10) )insert into 表1 select 'a'create table 表2 ( 编码 varchar(10), 名称 varchar(10) )insert into 表2 select 'a','a/01' union select 'a','a/02' declare @sql varchar(max) select a.编码 as 编码,名称 into #x from 表1 a inner join 表2 b on a.编码=b.编码 set @sql='select 编码' select @sql=@sql+' ,max(case when 名称='''+名称+''' then 名称 end)[名称'+名称1+']' from (select 名称,SUBSTRING(名称,3,100) as 名称1 from #x) t set @sql=stuff(@sql,10,1,'') set @sql=@sql+'from #x group by 编码' print @sql exec(@sql)
我把测试数据改一下,就不是想要的结果了 create table 表1 ( 编码 varchar(10) )insert into 表1 select 'a' union select 'b'create table 表2 ( 编码 varchar(10), 名称 varchar(10) )insert into 表2 select 'a','a/01' union select 'a','a/02'union select 'b','02'union select 'b','safd'
from tb1 t1
left jion tb2 t2
on t1.编码=t2.编码
left jion tb2 t3
on t1.编码=t3.编码
create table 表1
(
编码 varchar(10)
)insert into 表1
select 'a'create table 表2
(
编码 varchar(10),
名称 varchar(10)
)insert into 表2
select 'a','a/01'
union
select 'a','a/02'
declare @sql varchar(max)
select a.编码 as 编码,名称 into #x from 表1 a inner join 表2 b on a.编码=b.编码
set @sql='select 编码'
select @sql=@sql+' ,max(case when 名称='''+名称+''' then 名称 end)[名称'+名称1+']' from (select 名称,SUBSTRING(名称,3,100) as 名称1 from #x) t
set @sql=stuff(@sql,10,1,'')
set @sql=@sql+'from #x group by 编码'
print @sql
exec(@sql)
create table 表1
(
编码 varchar(10)
)insert into 表1
select 'a' union
select 'b'create table 表2
(
编码 varchar(10),
名称 varchar(10)
)insert into 表2
select 'a','a/01'
union
select 'a','a/02'union
select 'b','02'union
select 'b','safd'