【发布时间】:2013-06-11 21:37:20
【问题描述】:
我有一张桌子EmployeeMoves:
| EmployeeID | CityIDs
+------------------------------
| 24 | 23,21,22
| 25 | 25,12,14
| 29 | 1,2,5
| 31 | 7
| 55 | 11,34
| 60 | 7,9,21,23,30
我试图弄清楚如何扩展 EmployeeMoves.CityIDs 列中的逗号分隔值以填充 EmployeeCities 表,该表应如下所示:
| EmployeeID | CityID
+------------------------------
| 24 | 23
| 24 | 21
| 24 | 22
| 25 | 25
| 25 | 12
| 25 | 14
| ... and so on
我已经有一个名为SplitADelimitedList 的函数,它将一个以逗号分隔的整数列表拆分为一个行集。它将分隔列表作为参数。下面的 SQL 将在Value 列下给我一个带有拆分值的表:
select value from dbo.SplitADelimitedList ('23,21,1,4');
| Value
+-----------
| 23
| 21
| 1
| 4
问题是:如何使用单个(即使是复杂的)SQL 语句从 EmployeeMoves 填充 EmployeeCities,使用逗号分隔列表中的每一行中的 CityIDs EmployeeMoves 表,但在 T-SQL 中没有任何游标或循环?我可以在 EmployeeMoves 表中为 100 位不同的员工提供 100 条记录。
【问题讨论】:
-
埃里克 - 感谢您的编辑。以后我会记住你的建议。
标签: tsql sql-server-2008-r2 split