这是一个非常标准的新手问题,但我正在寻找一个专家巧妙的方式与一些代码来做到这一点。 (我知道如何做到这漫长的手,用程序代码和光标,所以我们可以跳过答案的一部分。)基本上,我有一个去标准化的数据集的,我需要提取归一化表一组处理方法即可。原始数据来自Excel中,这是我作为附加表从MS SQL查询。一个单一的场(在Excel和因此SQL)具有逗号分隔部门列表的每个产品参与。

我知道我应该正常化的数据,但它是从Excel中来(和用户这样做是不切合实际)。我知道我可以通过每个记录(如游标或语句)用程序做这个循环,但似乎没有必要与当今可用的工具。 有一个单独的语句,我可以提取主键与“参与”字段这些记录?

源看作:

的ProductID 部门结果 123 1,3,5,15 结果 456 2,4,5,16 结果

我做正常的SELECT * FROM dbo.split(CommaSepField),但对一条记录的时间(你不能在一个表值函数提供一个字段的值。更何况,这只是工作方式都做你的工会这些单个的结果集?

虚实所有结果集让我想起了公用表表达式,但我不能完全弄清楚如何(1)获取的主键与膨胀的领域,和(2)如何格式化查询工作。

当然的输出将是:

的ProductID 结果 123 1 结果 123 3 结果 123 5 结果 123 15 结果 456 2 结果 456 4 结果 456 5 结果 456 16 结果

我研究这个很中的StackOverflow和谷歌了一下,但并没有真正找到可以适用的是一个答案。我很抱歉,如果我错过了。请发送链接:d

有帮助吗?
scroll top