概述
有些时候我们用逗号分隔多个值,另外一些时候又需要把这些值单独拆开。
在ES中,两者之间的转化可以通过数据库视图来快速实现。
记录合并
- 典型的记录合并需求就是把单独记录合并为组,某些字段值用逗号分开。
数据库实现过程:
- 建立ES模板,填入数据。
- 建立数据库函数。
create function f_mergaChar(#Dept varchar(50))
returns varchar(6000)
as
begin
declare #values varchar(6000)
select @values=isnull(@values + ',','') + 姓名
from 合并测试_D where 部门=@Dept
return @values
end
- 建立ES视图,调用函数获取合并结果集。
记录拆分
- 记录拆分就是把合并的记录(逗号分隔)拆分为单独记录。
实现过程:
- 建立ES模板,填入数据。
- 建立ES视图,获取拆分结果集。
小结
-
记录合并在sql2000中需要使用自定义函数,在ES视图中调用函数实现。
-
记录拆分也类似,如果有基础表作为辅助,也可以直接通过ES视图实现,例如本文示例。
-
其他类似方法还有许多,例如SQL2005中的CTE递归等,本文为SQL2000下的解决方案。
-
其他进阶方案请参考宝典3.12节。
村长点评:使用nxcells和sql2008+可以直接在提数中用for xml path来合并记录,更快更方便。