当前位置: 代码迷 >> Sql Server >> 多个数据表合拢
  详细解决方案

多个数据表合拢

热度:73   发布时间:2016-04-24 10:39:54.0
多个数据表合并
表1
BLU	RepN
01 08  434
01 04  477
07 12  519
07 11  549
08 11  560
04 11  568
01 07  581
04 12  598
01 06  601
10 11  609
06 10  625
02 03  634
06 08  646
03 08  652
08 12  654
03 04  665
01 12  666
06 07  672
08 10  673
02 07  697
04 07  707
03 07  719
02 04  745
02 11  766
11 12  774
03 12  833
02 10  838
01 11  849
06 12  851
01 02  851
10 12  875
04 10  883
09 11  886
04 08  894
02 12  897
05 11  930
01 09  949
07 08  963
  表2
BLU1	RepN1
01 133955
02 147485
03 153295
04 166689
05 188967
06 138090
07 107990
08 60633
09 68339
10 26799
11 14902
 表3  
BLU2	RepN2
02 5655
03 25026
04 29502
05 89886
06 71380
07 109676
08 132257
09 201662
10 245659
11 140627
12 155814
 表4  
bulT	RepNT
1 133955
2 153140
11 155529
12 155814
3 178321
8 192890
4 196191
6 209470
7 217666
9 270001
10 272458
5 278853


想合并得到 表4 如下所示
id	BLU	RepN	BLU1	RepN1	BLU2	RepN2	bulT	RepNT
1 01 08  434 1 133955 2 5655 1 133955
2 01 04  477 2 147485 3 25026 2 153140
3 07 12  519 3 153295 4 29502 11 155529
4 07 11  549 4 166689 5 89886 12 155814
5 08 11  560 5 188967 6 71380 3 178321
6 04 11  568 6 138090 7 109676 8 192890
7 01 07  581 7 107990 8 132257 4 196191
8 04 12  598 8 60633 9 201662 6 209470
9 01 06  601 9 68339 10 245659 7 217666
10 10 11  609 10 26799 11 140627 9 270001
11 06 10  625 11 14902 12 155814 10 272458
12 02 03  634 5 278853
13 06 08  646
14 03 08  652
15 08 12  654
16 03 04  665
17 01 12  666
18 06 07  672
19 08 10  673
20 02 07  697
21 04 07  707
22 03 07  719
23 02 04  745
24 02 11  766
25 11 12  774
26 03 12  833
27 02 10  838
28 01 11  849
29 06 12  851
30 01 02  851
31 10 12  875
32 04 10  883
33 09 11  886
34 04 08  894
35 02 12  897
36 05 11  930
37 01 09  949
38 07 08  963

用SQL如何完成多个数据表合并,谢谢
------解决方案--------------------
select
id=row_number()over(order by (select 1)),
a.*,b.BLU1,b.RepN1,c.BLU2,c.RepN2,bulT,RepNT
from  a left join b on CHARINDEX(a.BLU+' ',b.BLU1+' ')>0
left join c on CHARINDEX(a.BLU+' ',c.BLU1+' ')>0
left join d on d.RepNT=b.RepN1 or d.RepNT=c.RepN2
  相关解决方案