列包含“,”的重复行

Duplicate rows where a column contains ","

我有如下数据

name    subject
a       m1
b       m2
c       m1, m3
d       m4, m5, m6
e       m7

我想复制 subject 列包含 , 的整行。原始数据的列比此处显示的要多得多。我将在 subject 列中复制等于 , 数量的行,因此我将重复 c 1 次和 d 2 次

我不知道 subject 列中有多少个单元格会有 , 并且 subject 列的单元格中的值数量没有上限

然后我想在重复的行上只保留一个值,这样主题列中的所有值都出现一次

name    subject
a       m1
b       m2
c       m1
c       m3
d       m4
d       m5
d       m6
e       m7

如果您是 运行 SQL Server 2016 或更高版本,您可以使用 string_split():

select t.name, value as subject
from mytable t
cross apply string_split(subject, ', ')

string_split() returns 一个唯一的列,称为 value.