关联两表列拼接需求:非零列优先,双零返回空值
需求与实现方案
关联表数据
表1(以column1为关联ID)
| column1 | column2 |
|---|---|
| Mike | 345 |
| Steve | 987 |
| Andy | 0 |
| Lucas | 0 |
表2(以column3为关联ID,与表1的column1对应)
| column3 | column4 |
|---|---|
| Mike | 543 |
| Lucas | 0 |
| Andy | 678 |
| Steve | 0 |
计算列拼接规则
- 优先判断表1的
column2是否不为0:若满足,拼接名称 + 空格 + column2 - 若表1
column2为0,再判断表2的column4是否不为0:若满足,拼接名称 + 空格 + column4 - 若两者均为0,则计算列留空
预期结果
| column3 | column4 | Concat column |
|---|---|---|
| Mike | 543 | Mike 345 |
| Lucas | 0 | |
| Andy | 678 | Andy 678 |
| Steve | 0 | Steve 987 |
实现代码
1. SQL 实现
假设表1名为table1,表2名为table2,通过column1 = column3关联,使用CASE语句实现逻辑:
SELECT t2.column3, t2.column4, CASE WHEN t1.column2 != 0 THEN CONCAT(t1.column1, ' ', t1.column2) WHEN t2.column4 != 0 THEN CONCAT(t2.column3, ' ', t2.column4) ELSE '' END AS `Concat column` FROM table2 t2 LEFT JOIN table1 t1 ON t1.column1 = t2.column3;
2. Power BI DAX 计算列
在表2中新建计算列,公式如下:
Concat column = VAR _table1_value = RELATED('table1'[column2]) RETURN IF( _table1_value <> 0, CONCATENATE('table2'[column3], " ", _table1_value), IF( 'table2'[column4] <> 0, CONCATENATE('table2'[column3], " ", 'table2'[column4]), BLANK() ) )
内容的提问来源于stack exchange,提问作者NoMoreGolden
相关产品推荐
相关产品推荐

