There are three tables and column have comma separated values as shown below: In table 1 there is a single value(TableValue1) and some values needs to get it from table2(Table2Name1 - get values on basis of name in table 2). In table 3 there is a group of sets present in table 2(Table3Name1 - need to fetch values from table 2 on basis of name).
Table 1 :
ID | Name | Values |
---|---|---|
1 | test 1 | Table1Value1,Table2Name1,Table3Name1 |
2 | test 2 | Table1Value2,Table2Name2,Table2Name4,Table3Name2 |
Table 2 :
Name | Values |
---|---|
Table2Name1 | A,B,C |
Table2Name2 | D,E,F |
Table2Name3 | G,H |
Table2Name4 | I,J,K |
Table 3:
Name | Values |
---|---|
Table3Name1 | Table2Name1,Table2Name3 |
Table3Name2 | Table2Name2,Table2Name3 |
Result, needs to be like below :
ID | Name | Values |
---|---|---|
1 | test 1 | table1value1,A,B,C,G,H |
2 | test 2 | Table1Value2,D,E,F,I,J,K,G,H |
select *
from ( select tbl.id,tbl.name,tbl.value,table2.value
from (select id,name,value
from table1
cross apply string_split(data,',')) as tbl
left join table2 on tbl.value = table2.name) as A
left join(select b.table3name,tb.value,table2.[values]
from(select tbl3.table3name,tbl3.value
from(select tbl3.name,tbl3.[values],value
from table3
cross apply string_split(tbl3.[values],',')) as tbl3) as tb
left join table2 on table2.name = tb.value) as B on A.value = B.name
but its not showing correct data.