如何编写SQL根据同分组不同值生成目标列Column C?
如何用SQL生成同组内其他列值的关联表
原数据表
| Column A | Column B |
|---|---|
| 1000 | 8800 |
| 1000 | 8810 |
| 1000 | 8820 |
| 2000 | 9900 |
| 2000 | 9910 |
目标数据表
| Column A | Column B | Column C |
|---|---|---|
| 1000 | 8800 | 8810 |
| 1000 | 8800 | 8820 |
| 1000 | 8810 | 8800 |
| 1000 | 8810 | 8820 |
| 1000 | 8820 | 8800 |
| 1000 | 8820 | 8810 |
| 2000 | 9900 | 9910 |
| 2000 | 9910 | 9900 |
你需要的是将同一Column A分组下的其他Column B值作为Column C,用**自连接(Self Join)**就能实现,不需要用Concat函数。具体SQL语句如下:
SELECT t1.`Column A`, t1.`Column B`, t2.`Column B` AS `Column C` FROM your_table t1 JOIN your_table t2 ON t1.`Column A` = t2.`Column A` WHERE t1.`Column B` != t2.`Column B` ORDER BY t1.`Column A`, t1.`Column B`, t2.`Column B`;
逻辑说明
- 自连接将表与自身关联,通过
ON t1.Column A= t2.Column A``确保只匹配同一分组的数据 WHERE t1.Column B!= t2.Column B``排除了Column B值与自身配对的情况,只保留同组内的其他值ORDER BY用于让结果和目标表排序一致,不需要的话可以去掉这部分
内容的提问来源于stack exchange,提问作者mogambo
相关产品推荐
相关产品推荐

