簡體   English   中英

根據 case when 語句返回一個字符串

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM