首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过三列连接两个表,包括id的

通过三列连接两个表,包括id的
EN

Stack Overflow用户
提问于 2016-01-30 02:35:34
回答 3查看 37关注 0票数 0

我有以下表格:

table1

代码语言:javascript
复制
+----------+-----------+---------+------------+-------------+---------+
| dlr_code | dlr_yrmon | country | num_repair | num_vehicle |  cost   |
+----------+-----------+---------+------------+-------------+---------+
| J5631    |    201006 | USA     |         10 |          10 | 1300.52 |
| 01031    |    201312 | KEN     |          1 |           1 | 110.73  |

表2

代码语言:javascript
复制
+-------------+---------------------+-----------------------------------------+
| repair_date |  country_repaired   |              repair_dealer              |
+-------------+---------------------+-----------------------------------------+
| 30/06/2010  | UNITED STATES(USA)  | PREIGE DUDIN(J5631)                     |
| 28/05/2010  | UNITED KINGDOM(GBR) | BROTRS , LILN(11126)                    |

其思想是按年、月、国家和经销商代码将表1合并/联接到表2表中,因此表2中将有以下列:表2中添加了num_repair、num_vehicle、cost。

如果你需要更多信息,请让我知道。任何帮助都会非常感谢。

谢谢,米尔斯

EN

回答 3

Stack Overflow用户

发布于 2016-01-30 03:00:00

试试这个:

代码语言:javascript
复制
select 
from table1 t1 inner join
table2 t2
on t2.repair_dealer like concat('%',t1.dlr_code,'%')
and t1.dlr_yrmon = concat(DATEPART(yyyy,t2.repair_date), DATEPART(mm,t2.repair_date))
and t2.country_repaired like concat('%',t1.country,'%')
票数 0
EN

Stack Overflow用户

发布于 2016-01-30 03:02:32

在不知道平台的情况下,我只能告诉你如何在一年一个月加入:

代码语言:javascript
复制
SELECT t2.*, num_vehicle, num_repair
FROM table_2 t2
LEFT JOIN table_1 t1 on  
       year(t2.repair_date) = substring(t1.dlr_yrmon,1,4) 
  AND  month(t2.repair_date) = substring(t1.dlr_yrmon,5,2)

这种技术可以扩展到数据中的其他列,但是我需要知道平台,这样我才能知道在字符串中查找()的最佳方法。

票数 0
EN

Stack Overflow用户

发布于 2016-02-01 22:22:15

对不起,我忘了提到我正在使用的SQL平台是亚马逊( RedShift )。

Jairaj,谢谢你的回答,但我的平台不支持CONCAT函数。到目前为止,我得到的是:

select distinct t2.vin from table1 t1 inner join pres_table2 t2 on REGEXP_SUBSTR(REGEXP_SUBSTR(t2.repair_dealer,'([:alnum:]+)+$'),'[:alnum:]+') = t1.dlr_code AND SUBSTRING(t1.dlr_yrmon,1,4)|| '-‘| SUBSTRING(t1.dlr_yrmon,5,6) = SUBSTRING(t2.repair_date,1,7) Limit 10

谢谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35091624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档