我需要连接2个表,我需要在表1中的列子字符串。未知的是连接到表2的子字符串的长度。前几个数字是不同长度的连接键。表2确实说明了长度,并将作为指示符,在该指示符上需要将条目添加特定长度的子字符串。第二个表的固定长度为9,因此也需要添加子字符串(这很容易做到)。表1是我的问题。表2中的长度列告诉您要使用多少ShortRef,以及表1中要使用多少子字符串RefNr,然后成为连接。然而,我不确定如何在SSMS中做到这一点,或者是否可能。
由于表2通知了子字符串的大小,我目前没有看到解决方案,我不知道like是否会起作用,也不知道如何使用like来实现。
的例子:
TABLE 1
|RefNr |
|----------------|
|1234567890101234|
|9876543210090876|
|1234569000100223|
TABLE 2
|ShortRef | Length | Name |
|---------|--------|------|
|123456789|8 |Alice |
|123456909|8 |Cindy |
|987654999|6 |Ben |
RESULTS SHOULD BE:
|RefNr | Substr Table1&2 based on Length in Table2 | Name |
|----------------|-------------------------------------------|------|
|1234567890101234| 12345678 |Alice |
|9876543210090876| 987654 |Ben |
|1234569000100223| 12345690 |Cindy |
表的示例
我不知道你是否想要这个,但是我用这个为示例表取了正确的输出。
SELECT RefNr
,tb2."Substring Table1 based on length in Table2"
,tb2.Name
FROM Table1
INNER JOIN
(SELECT SUBSTRING(ShortRef, 0, Length+1) as "Substring Table1 based on length in Table2",
Name,
Length
FROM Table2) as tb2
ON SUBSTRING(RefNr, 0, tb2.Length + 1) = tb2."Substring Table1 based on length in Table2"
看起来您想用字符串操作将表连接在一起:
select t1.*, left(t2.refnr, t2.length), t2.name
from table1 t1 join
table2 t2
on left(t2.refnr, t2.length) = left(t1.refnr, t2.length);