Sql Bigquery - 将两列连接成一个新列
Sql Bigquery - concat two columns into a new column
我想将下面显示的两列合并为一个新列。
我正在使用这个查询:
SELECT
CONCAT( A_Bill_ID , ' ', B_BILL_ID ) AS BILL_ID
FROM
`table.tmp_140222`
根据这个查询,结果会是这样的。
我的问题是我只想连接没有相似值的列,这样新的列值就不会重复两次。从上面的结果来看,ID 是重复的,因为两列都具有相同的值。
谁能帮帮我?
谢谢
select if (
a_bill_id = b_bill_id,
a_bill_id,
concat(a_bill_id , ' ', b_bill_id )
) as bill_id
from your_table
... shows null value ....
select if (
a_bill_id = b_bill_id or (a_bill_id = b_bill_id) is null,
coalesce(a_bill_id, b_bill_id),
concat(a_bill_id , ' ', b_bill_id )
) as bill_id
from your_table
你可以使用这样的 case 语句 -
SELECT
case when A_Bill_ID = B_BILL_ID then a_bill_Id
else CONCAT(A_Bill_ID , ' ', B_BILL_ID )
end AS BILL_ID
FROM `table.tmp_140222`
如果初始列中有 Null 值,您可以使用 IFNULL 或 COALEASE 将其替换为空字符串。但在这种情况下,我建议在没有分隔符的情况下使用它或编写多个 'when' 语句以避免在最后一列中出现尾部空格 -
SELECT
case when A_Bill_ID = B_BILL_ID then a_bill_Id
else CONCAT(IFNULL(A_Bill_ID), ''), "", IFNULL(B_BILL_ID, ''))
end AS BILL_ID
FROM `table.tmp_140222`
我想将下面显示的两列合并为一个新列。
我正在使用这个查询:
SELECT
CONCAT( A_Bill_ID , ' ', B_BILL_ID ) AS BILL_ID
FROM
`table.tmp_140222`
根据这个查询,结果会是这样的。
我的问题是我只想连接没有相似值的列,这样新的列值就不会重复两次。从上面的结果来看,ID 是重复的,因为两列都具有相同的值。
谁能帮帮我?
谢谢
select if (
a_bill_id = b_bill_id,
a_bill_id,
concat(a_bill_id , ' ', b_bill_id )
) as bill_id
from your_table
... shows null value ....
select if (
a_bill_id = b_bill_id or (a_bill_id = b_bill_id) is null,
coalesce(a_bill_id, b_bill_id),
concat(a_bill_id , ' ', b_bill_id )
) as bill_id
from your_table
你可以使用这样的 case 语句 -
SELECT
case when A_Bill_ID = B_BILL_ID then a_bill_Id
else CONCAT(A_Bill_ID , ' ', B_BILL_ID )
end AS BILL_ID
FROM `table.tmp_140222`
如果初始列中有 Null 值,您可以使用 IFNULL 或 COALEASE 将其替换为空字符串。但在这种情况下,我建议在没有分隔符的情况下使用它或编写多个 'when' 语句以避免在最后一列中出现尾部空格 -
SELECT
case when A_Bill_ID = B_BILL_ID then a_bill_Id
else CONCAT(IFNULL(A_Bill_ID), ''), "", IFNULL(B_BILL_ID, ''))
end AS BILL_ID
FROM `table.tmp_140222`