日期:2014-05-18  浏览次数:20528 次

字段值翻译
一张分类表
编码 内容
01 a
02 b
03 c
04 d
05 e

测试数据表
id 内容
1 01,05
2 02
3 01,03
4 02,05
5 01,02,03
6 01,02,04,05
7 02,04
数据结果
id 内容
1 a,e
2 b
3 a,c
4 b,e
5 a,b,c
6 a,b,d,e
7 b,d



------解决方案--------------------
SQL code


--> 测试数据:[A1]
if object_id('[A1]') is not null 
drop table [A1]
create table [A1](
[编码] varchar(2),
[内容] varchar(1)
)
insert [A1]
select '01','a' union all
select '02','b' union all
select '03','c' union all
select '04','d' union all
select '05','e'
--> 测试数据:[B2]
if object_id('[B2]') is not null 
drop table [B2]
create table [B2](
[id] int,
[内容] varchar(11)
)
insert [B2]
select 1,'01,05' union all
select 2,'02' union all
select 3,'01,03' union all
select 4,'02,05' union all
select 5,'01,02,03' union all
select 6,'01,02,04,05' union all
select 7,'02,04'
go

with t
as(
select 
    b.id,
    a.内容 
from 
    [B2] b
inner join 
    [A1] a
on 
    CHARINDEX(a.编码,b.内容)>0
)
select 
    a.id,
    内容=stuff((SELECT ','+内容 
from 
    t 
where 
    a.id=t.id for xml path('')),1,1,'')
from 
    t  a
group by 
    a.id
/*
id    内容
----------------------
1    a,e
2    b
3    a,c
4    b,e
5    a,b,c
6    a,b,d,e
7    b,d
*/