I am using 2017 MS SQL Express. The following code creates this erroneous result. Any clues why?
SELECT BNAME, LIC_STRING INTO dbo.SEPARATE2 FROM dbo.together CROSS APPLY STRING_SPLIT(LIC_STRING, ','); table dbo.together result, dbo.SEPARATE2 BNAME | LIC_STRING BNAME | LIC_STRING A1 | AB,AC,AD A1 | AB,AC,AD B2 | AX,AD A1 | AB,AC,AD A1 | AB,AC,AD B2 | AX,AD B2 | AX,AD
Advertisement
Answer
You are using cross apply
which is applying your join on 2 tables where result contain table on left with all the columns and table on right with matching values.
Since in this query dbo.together
has 2 rows and for each value in string_split
it generate same number of rows. 1:n
relation in between these 2 tables.
SELECT TOGETHER.BNAME, STR.VALUE INTO dbo.SEPARATE2 FROM dbo.together AS TOGETHER CROSS APPLY (SELECT VALUE FROM STRING_SPLIT(TOGETHER.LIC_STRING, ',')) AS STR;
You may find this link for more details on CROSS APPLY
.