[英]return a string based on a case when statement
所以我有两张桌子
我想知道是否有人可以提供帮助。 所以在我的主表中,我有不同格式的字符串。
Mac 地址正在作为仪表填充,但它们仍然链接在另一个表中。
在 bigquery 中清理此数据以仅将 mac 地址的仪表拉回所需结果的最佳方法是什么?
到目前为止,我已经尝试过了,但我没有得到任何结果,而且我仍然在仪表应该在的地方得到 mac 地址? 只要 meter 和 L_meter 也连接在一起,左连接表的问题是我也在尝试返回 MAP ID。
SELECT DISTINCT
COALESCE(table2.L_METER,METER) AS METER,
MAP.map_id AS Map,
FROM `table1 ` AS A
LEFT JOIN `table2` AS MAP ON METER = L_METER
AND METER = MAP.mac_address
主表
仪表 |
---|
G4F00113102000 |
904DC300000RE122 |
904DC3000001E131 |
G4F00191402000 |
G4F00610542000 |
左连接表
L_METER | MAC地址 | MAP |
---|---|---|
E6S15544342061 | 904DC3000001E131 | SSL |
G4F00111072000 | 904DC300000RE122 | SMP |
G4F00113102000 | 904DC3000001T133 | SMP |
G4F00191402000 | 904DC3000001Y144 | SMP |
G4F00610542000 | 904DC3000001U55 | SMP |
期望的结果
仪表 |
---|
G4F00113102000 |
G4F00111072000 |
E6S15544342061 |
G4F00191402000 |
G4F00610542000 |
您可以将COALOESCE()
与左连接一起使用。 如果table1.METER=table2.mac_address
L_METER
选择 L_METER,否则将选择L_METER
NULL 和METER
。
架构和插入语句:
create table table1 (METER varchar(20));
insert into table1 values('G4F00113102000');
insert into table1 values('904DC300000RE122');
insert into table1 values('904DC3000001E131');
insert into table1 values('G4F00191402000');
insert into table1 values('G4F00610542000');
create table table2(L_METER varchar(20),mac_address varchar(20));
insert into table2 values('E6S15544342061','904DC3000001E131');
insert into table2 values('G4F00111072000','904DC300000RE122');
insert into table2 values('G4F00113102000','904DC3000001T133');
insert into table2 values('G4F00191402000','904DC3000001Y144');
insert into table2 values('G4F00610542000','904DC3000001U55');
询问:
select coalesce(table2.L_METER,METER) METER
from table1 left join table2
ON table1.METER=table2.mac_address
Output:
仪表 |
---|
G4F00113102000 |
G4F00111072000 |
E6S15544342061 |
G4F00191402000 |
G4F00610542000 |
db<> 在这里摆弄
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.