根据A表中的不同字段,连接B表中的不同行。

以下例子,表x是8仓换电柜的信息,包含8个仓中的电池编号,表y是电池的信息,现在需要两个表部分信息合并,将x中的电池编号与y中的相同编号的电池数据并在一行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

select
x.*
,y1.val6 as soc1
,y2.val6 as soc2
,y3.val6 as soc3
,y4.val6 as soc4
,y5.val6 as soc5
,y6.val6 as soc6
,y7.val6 as soc7
,y8.val6 as soc8
from
(
select *
from
DCWLW.dbo.newbox_b002
where nbox_b002_id in
(select MAX(nbox_b002_id) from DCWLW.dbo.newbox_b002 group by device_code)
)x
left join DCWLW.dbo.device_date y1
on x.door1_bat_code=y1.barcode
left join DCWLW.dbo.device_date y2
on x.door2_bat_code=y2.barcode
left join DCWLW.dbo.device_date y3
on x.door3_bat_code=y3.barcode
left join DCWLW.dbo.device_date y4
on x.door4_bat_code=y4.barcode
left join DCWLW.dbo.device_date y5
on x.door5_bat_code=y5.barcode
left join DCWLW.dbo.device_date y6
on x.door6_bat_code=y6.barcode
left join DCWLW.dbo.device_date y7
on x.door7_bat_code=y7.barcode
left join DCWLW.dbo.device_date y8
on x.door8_bat_code=y8.barcode

以上的速度稍慢,不知有没有效率更高的方法