如何从2个不同格式的表中加入YEARS

时间:2017-03-30 19:21:31

标签: sql oracle

我正在尝试在excel中创建一个自定义视图,我不能加入YEARSF,因为tb1格式是2016-17,tb2是2016/17,我如何加入这些,请参阅下面的代码......什么是这样做的合适方式

TB1.YEARF = TB2.YEARF

似乎是个问题

     SELECT TB1.YEARF, 
TB1.MC,
TB1.CATEG, 
TB1.ID, 
TB1.TY, 
TB1.CAT, 
TB1.LOC, 
TB2.HD0_NAME,
TB2.HD1_NAME, 
TB2.HD2_NAME, 
TB2.HD3_NAME, 
TB2.HD4_NAME
FROM DB.TB2 TB2, DB.TB1 TB1
WHERE TB2.CAT = TB1.CAT AND TB2.LOC = TB1.LOC AND TB1.TY = TB2.TY AND TB1.YEARF = TB2.YEARF AND TB1.ID = TB2.ID

2 个答案:

答案 0 :(得分:1)

OracleMySQL都有REPLACE()个功能。

如果您更改查询中的

部分
 AND TB1.YEARF = TB2.YEARF AND

 AND TB1.YEARF = REPLACE(TB2.YEARF, '/', '-') AND

您可以加入这些表格。它不会很快。

一般来说,要做这种不精确的匹配,你必须

  1. 找出匹配规则。例如,如果您希望abcd/efabcd-ef匹配,那么您可以使用我上面写的内容。如果您希望abcd/efabcd匹配,则该规则不同。

  2. 编写SQL表达式以实现规则。

  3. 但是,你知道,第1步必须在第2步之前。

    如果你关心的只是与abcdabcd/ef的{​​{1}}部分匹配,你可以为此编写规则。

    abcd-ef

答案 1 :(得分:0)

WHERE Format(TB1.YEARF, "yyyy-dd") = Format(TB2.YEARF, "yyyy-dd")