在SQL中用“/”分隔同一列中的多个值

我在Excel表中有一个表,我正在使用Tableau中的自定义SQL选项。 该表具有以下结构:


Project Identified Led Fee 1 Employee1 Employee2 100000 2 Employee2 Employee3 200000 3 Employee1 / Employee2 Employee1 300000 

我正在使用下面的代码来获得下一个结构:

 select [Identified] as Name, [Project], 'Identified' as Contribution, [Fee] union select [Led], [Project], 'Led', [Fee] 

  Name Project Contribution Fee Employee1 1 Identified 100000 Employee1 3 Identified 300000 Employee1 3 Led 300000 Employee2 1 Led 100000 Employee2 2 Identified 200000 Employee2 3 Identified 300000 Employee3 2 Led 200000 

但是我当然不能把上面的“Employee1 / Employee2”分开。 我怎样才能做到这一点?

提前致谢。

如果你只想select“Employee1”,你可以使用WHERE。 例如:

表A:

 (Column: Name) - (Column: Colour) Employee1 - Purple Employee1 - Blue Employee2 - White 

码:

 SELECT Name, Colour FROM TableA WHERE Name = 'Employee1' 

Project和Employee之间有一个名为“Identified”的多对多关系。 通过用多个分隔符将多个值填充到单个字段中来表示一对多关系会导致各种各样的困难,这就是为什么关系数据库devise强烈地阻止该方法并鼓励将重复信息放入新表(或工作表中Excel案例)。

因此,更灵活的方法是为每个员工提供一个工作表,每个员工具有一个员工ID列,以唯一标识每个员工。 它可以是一个合成的内部唯一的ID。 为项目提供一个类似的工作表。 最后,第三个链接或连接表工作表来表示已识别的关联 – 两列包含一个员工ID和一个项目ID。 该表中的每一行都表示特定的员工帮助识别了一个特定的项目。

如果一个项目可以有多个领导者,那么可以使用相同的方法进行关联。 如果没有,你可以在Project表中有一个leader_id列。 如果您将关联分解出来,则可以添加与关联关联的信息,例如date,angular色等,但这会增加一些复杂性。

这是标准的数据库devise。 对于进行了40年了解得很清楚。 查看任何有关数据库devise或数据build模的书籍,了解有关数据库规范化的信 你的devise违反了第一个正常的forms,通常是一个好主意,至less要争取第三个正常forms – 然后在特殊情况下退出性能优化或只读仓库devise。

您可以坚持使用您当前的devise,并尝试在每个读取数据的应用程序中尝试处理分隔符以处理多值字段。 但是,你将会与你的数据作斗争,而不是以一种自然代表关系的方式组织数据。