[英]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.