FOR XML PATH 应用及其反向分解
2015-08-21 17:10
281 查看
数据库环境:SQL SERVER 2005
我们实现将同一组的数据内容合并到一行的时候,可以通过FOR XML PATH来实现。
有数据如图1,要实现图2的效果
View Code
我们实现将同一组的数据内容合并到一行的时候,可以通过FOR XML PATH来实现。
有数据如图1,要实现图2的效果
/*准备数据*/ WITH x0 AS ( SELECT 1 AS id , '001,002' AS ty UNION ALL SELECT 2 AS id , '003' AS ty UNION ALL SELECT 3 AS id , '004,1234' AS ty UNION ALL SELECT 4 AS id , '01,005,006' AS ty ), x1 ( id, ty1, ty2 ) AS ( SELECT id , CASE WHEN CHARINDEX(',', ty, 1) > 0 THEN CONVERT(VARCHAR(10), LEFT(ty, CHARINDEX(',', ty, 1) - 1)) ELSE ty END AS ty1 ,--本次拆分字符 CASE WHEN CHARINDEX(',', ty, 1) > 0 THEN STUFF(ty + ',', 1, CHARINDEX(',', ty), '') ELSE NULL END AS ty2--待拆分字符串 FROM x0 UNION ALL SELECT id , CONVERT(VARCHAR(10), LEFT(ty2, NULLIF(CHARINDEX(',', ty2, 1), 0) - 1)) AS ty1 ,--本次拆分字符 STUFF(ty2, 1, CHARINDEX(',', ty2), '') AS ty2--待拆分字符串 FROM x1 WHERE CHARINDEX(',', ty2, 1) > 0 ) SELECT id,ty1 AS ty FROM x1 ORDER BY id
View Code
相关文章推荐
- hdu5410
- exynos4412电路OrCAD问题
- jdbc ,FetchSize
- 编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。
- 关于startUML中各种连线这间的关系
- 旋转数组的最小数字
- 线程的同步互斥之事件对象(Event)
- 单一控制器实现员工信息管理
- qt编译mysql驱动插件
- Android 自动注释,导入模板文件
- Linux 自学命令
- 产品新人应该学会的几点坚持
- 编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票中心。售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过
- 树状数组详细分析
- Delphi_OD_代码_调试_Delphi反调试技术(以OD为例附核心原代码)
- 对比两个实体类属性值的差异
- 探索static——不需要能够使用该类实例?
- 直接插入排序
- AndroidManifest.xml
- tcpkill清除异常tcp连接