【发布时间】:2015-05-20 06:42:51
【问题描述】:
我读了这篇文章: Turning a Comma Separated string into individual rows
真的很喜欢这个解决方案:
SELECT A.OtherID,
Split.a.value('.', 'VARCHAR(100)') AS Data
FROM
( SELECT OtherID,
CAST ('<M>' + REPLACE(Data, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM Table1
) AS A CROSS APPLY Data.nodes ('/M') AS Split(a);
但是当我尝试在 Teradata 中应用该方法来解决类似问题时,它不起作用。这是总结的错误代码: 选择失败 3707: 期望在 '.' 之间和“价值”关键字。那么代码是否仅在 SQL Server 中有效?有人能帮我让它在 Teradata 或 SAS SQL 中工作吗?您的帮助将不胜感激!
【问题讨论】:
-
这绝对是一个sql-server唯一的功能。您是否介意发布您的数据现在的样子,以及您希望查询的结果如何?也许那时我们可以编写一些 SQL 或挖掘一个可以在 Teradata 中完成这项工作的函数。
-
您尝试做些什么来解决它?你有什么尝试?
-
@JNevill 您好 JNevill 和 UpAndAdam,感谢你们愿意提供帮助。我找到了另一种在 SAS 中绕过它的方法。我试图将具有多个描述的字段拆分为“#”以分隔行。这是有效的 SAS 代码:data Example2;设置示例; /* 计算分隔符出现的次数 / count= count(Description, '#'); / 将每个描述输出到单独的观察中 */ do i=1 to count;描述2 =扫描(描述,我,'#');输出;结尾;运行;