Katılmaya çalıştığım iki tablo var. Bir tablonun içinde kimlikleri olan bir sütun var ve ikinci tabloda hücre başına birden fazla kimlik içerebilir, ancak aynı kimlikleri olan farklı bir tabloya bir sol birleştirme yapmaya çalışıyorum. Örneğin, ilk tablomun 123
kimlik değerine sahip olması ve ikinci tablonun 123;724;823
kimlik değerine sahip olması durumunda, bu iki satırı birleştirmek için bir yol var mı?SQL - Birden çok değer içeren bir sütunda birleşim kullanarak, hücrelerde
0
A
cevap
0
Sorgu tasarımcısında denediniz mi? Orada birleşme yapmak çok kolay. koşul X, Y, Z
Umut size yardımcı olacaktır NEREDE masa isim1 SOLDAN
SEÇ COLUMN_NAMES ID_column-isim1 = ID_Column-NAME2 ÜZERİNE masa ad2 KATILIN. Birden like
operatörleri kullanarak
0
select *
from
(
select '123' as id
union select '124'
) as t1
left join
(
select '123;001;002' as id
union select '001;123;002'
union select '001;002;123'
) as t2 on
t2.id = t1.id
or t2.id like t1.id + ';%'
or t2.id like '%;' + t1.id + ';%'
or t2.id like '%;' + t1.id
0
muhtemelen en hızlı yoludur, ancak bu bir DelimitedSplit8K gibi bir dize ayırıcı işlevini varsa, bir tabloya dışarı değerleri bölmek ve ona katılabilir.
SELECT *
FROM table1 t1
LEFT JOIN (
SELECT *
FROM table2 t2
OUTER APPLY (
SELECT *
FROM dbo.[DelimitedSplit8K] (t2.id,';') -- splits the values in multi id column
) t
) t ON t.Item = t1.id -- t.Item is the value generated from the DelimitedSplit8K TVF