如何将一张表的日期列与另一张表的编码列全匹配拼接为组合字段
你需要使用交叉连接(笛卡尔积)实现两张表数据的全匹配,再按要求拼接字段即可,不同数据库语法差异很小,以下是对应实现:
标准SQL通用实现
SELECT CONCAT(t1.DATE, ' - ', t2.CODE) AS combined_field FROM Table1 t1 CROSS JOIN Table2 t2
逻辑说明
CROSS JOIN 会返回两张表的笛卡尔积,即Table1中的每一条日期数据都会和Table2中的每一条编码数据完成匹配,完全符合你每个日期匹配所有编码的需求,再通过CONCAT函数将两个字段按你指定的格式拼接即可。
不同数据库兼容写法
如果使用MySQL、Oracle、PostgreSQL等数据库,也可以用对应简化语法:
- MySQL写法:
SELECT CONCAT(DATE, ' - ', CODE) AS combined_field FROM Table1, Table2
- Oracle/PostgreSQL写法:
SELECT t1.DATE || ' - ' || t2.CODE AS combined_field FROM Table1 t1 CROSS JOIN Table2 t2
注:你给出的预期结果示例存在重复笔误,2条日期*2条编码的正确输出共4条不重复数据,分别对应两个日期和两个编码的全量组合。
内容的提问来源于stack exchange,提问作者Seth R
相关产品推荐
相关产品推荐

