+ -
当前位置:首页 → 问答吧 → sql 横向查找合并

sql 横向查找合并

时间:2011-04-21

来源:互联网

我以下有表1,表2两个表,要得到表3的结果:
表1:
编号 规格A 名称A 规格B 名称B 规格C 名称C 规格D 名称D 规格E 名称E
1 28*14 aaa 26*18.5 aaa      
2 26.5*21 bbb 28*18.5 aaa 28*18.5 bbb   
3 28.5*21 ccc 21*12 ccc 21*12 ddd 28.5*21 ddd 30*32 eee



表2:


编号 规格
1 28*14
1 26*18.5
2 26.5*21
2 28*18.5
3 28.5*21
3 21*12
3 30*32

表3

编号 规格 名称
1 28*14 aaa
1 26*18.5 aaa
2 26.5*21 bbb
2 28*18.5 aaa/bbb
3 28.5*21 ccc/ddd
3 21*12 ccc/ddd
3 30*32 eee

作者: booby   发布时间: 2011-04-21

select 表2.编号,表2.规格,T.名称 from 表2,
(SELECT distinct 编号,规格A as 规格,名称A as 名称 FROM 表1 union
SELECT distinct 编号,规格B as 规格,名称B as 名称 FROM 表1 union
SELECT distinct 编号,规格C as 规格,名称C as 名称 FROM 表1 union
SELECT distinct 编号,规格D as 规格,名称D as 名称 FROM 表1 union
SELECT distinct 编号,规格E as 规格,名称E as 名称 FROM 表1 ) T
where 表2.编号=T.编号 and 表2.规格=T.规格

作者: marco   发布时间: 2011-04-21

不对,关键我还要合并

作者: booby   发布时间: 2011-04-21

晕,你这个需求居然还有多行合并一行的问题,上面那个还不完整,得将表1进行处理,用IIF来判断各规格栏,然后对名称进行合并才能处理。
大概思路就是这样,具体自己完善一下吧!

作者: marco   发布时间: 2011-04-21