SQL行转列问题处理
来源:互联网 发布:.wang域名 不利于排名 编辑:程序博客网 时间:2024/06/16 15:12
问题描述:无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数, 所以,当我们在处理下列要求时,会比较麻烦:有表tb, 如下:id value----- ------1 aa1 bb2 aaa2 bbb2 ccc需要得到结果:id values------ -----------1 aa,bb2 aaa,bbb,ccc即, group by id, 求 value 的和(字符串相加) 1. 旧的解决方法 -- 1. 创建处理函数CREATE FUNCTION dbo.f_str(@id int)RETURNS varchar(8000)ASBEGIN DECLARE @r varchar(8000) SET @r = '' SELECT @r = @r + ',' + value FROM tb WHERE id=@id RETURN STUFF(@r, 1, 1, '')ENDGO-- 调用函数 SELECt id, values=dbo.f_str(id) FROM tb GROUP BY id -- 2. 新的解决方法 -- 示例数据DECLARE @t TABLE(id int, value varchar(10))INSERT @t SELECT 1, 'aa'UNION ALL SELECT 1, 'bb'UNION ALL SELECT 2, 'aaa'UNION ALL SELECT 2, 'bbb'UNION ALL SELECT 2, 'ccc' -- 查询处理SELECT *FROM( SELECT DISTINCT id FROM @t)AOUTER APPLY( SELECT [values]= STUFF(REPLACE(REPLACE( ( SELECT value FROM @t N WHERE id = A.id FOR XML AUTO ), '<N value="', ','), '"/>', ''), 1, 1, ''))N /*--结果id values----------- ----------------1 aa,bb2 aaa,bbb,ccc(2 行受影响)--*/
0 0
- SQL行转列问题处理
- sql server数据库连接问题处理
- java.sql.BatchUpdateException问题处理
- 关于SQL处理能力的问题
- SQL超长8000问题的处理方法
- 如何处理SQL Server死锁问题
- 关于SQL Server星期问题的处理
- 利用SQL处理DataGrid表格问题
- SQL Server 检查和处理死锁问题
- .NET连接SQL Server的问题处理
- Java.sql.Date精确度问题处理
- SQL SERVER数据库使用问题处理
- Sql server行转列处理Sample
- Sql server行转列处理Sample
- Sql server行转列处理Sample
- 如何在SQL Server2000中处理半个汉字的问题
- 解决SqlTransaction用尽的问题(SQL处理超时)
- 如何在SQL Server2000中处理半个汉字的问题
- Oracle-sql截取URL中的域名
- UVA - 12293 Box Game (规律)
- Spring Test 整合 JUnit 4 使用总结
- Android Wear 控件——WearableListView(附Demo)
- 银行吵架故事
- SQL行转列问题处理
- 海量数据处理
- java基础
- 记录有用的网址
- LeetCode 27 Valid Palindrome
- KJFrameForAndroid框架学习----高效设置网络图片
- 检查内存泄露的工具
- 马尾青州集装箱码头有限公司技术部
- hdu1358 Period kmp+模拟