我有两个表,我试图加入bigquery。我正在加入他们的序列号,但是对于其中一个表,序列号以5个零开头而另一个表没有。如何使用截断的值编写此连接?
我可以在联接中执行此操作,还是必须先执行此操作并将其另存为新表?
SELECT * FROM [dataworks-356fa:FirebaseArchive.PT_Results] AS Model_Results
JOIN [dataworks-356fa:FirebaseArchive.Master_List_PT] as Master_List on Serial=Serial_Number
具有5个零的表是PT_Results。
例如...... PT_Results serial#= 0000028106 Master_list_PT serial#= 28106
答案 0 :(得分:1)
尝试将两列都转换为int:
SELECT *
FROM
(
SELECT
SUBSTR(CAST(CAST(Serial AS INT) AS STRING), 1, 5) AS Serial,
Latest_Use,
Total_Hours,
Devices_Connected
FROM [dataworks-356fa:FirebaseArchive.PT_Results]
) AS Model_Results
JOIN
(
SELECT
SUBSTR(CAST(CAST(Serial_Number AS INT) AS STRING), 1, 5) AS Serial_Number,
Status,
Model_Number
FROM [dataworks-356fa:FirebaseArchive.Master_List_PT]
) AS Master_List
ON Model_Results.Serial = Master_List.Serial_Number
将Serial
转换为整数应该从比较的角度删除前导零。请注意,我使用派生表来执行转换,以便ON
子句仅涉及纯列而不涉及函数。
<强>更新强>
如果你想比较两个串行列之后的前五位数已经剥离了前导零,你可以尝试双重投射:
SUBSTR(CAST(CAST(Serial AS INT) AS STRING), 1, 5)