繁体   English   中英

Sql Bigquery - 将两列连接成一个新列

[英]Sql Bigquery - concat two columns into a new column

我想将下面显示的两列合并为一个新列。

A_Bill_ID B_BILL_ID

我正在使用这个查询:

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    

... 显示 null 值....

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

您可以使用这样的案例陈述 -

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`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM