读书人

求sql话语写法

发布时间: 2012-07-31 12:33:47 作者: rapoo

求sql语句写法
比如:SELECT [ID] FROM [table1]

返回:
1
2
3
4

怎么写语句可以得到下
1,2,3,4,


[解决办法]

SQL code
--> 测试数据:[tbl]if object_id('[tbl]') is not null drop table [tbl]create table [tbl]([id] int)insert [tbl]select 1 union allselect 2 union allselect 3 union allselect 4declare @str varchar(20)set @str=''select @str=@str+','+LTRIM(id) from tblselect RIGHT(@str,LEN(@str)-1) as new/*new1,2,3,4*/
[解决办法]

select ltrim(id)+',' from [tb] for xml path('')
[解决办法]
SQL code
表a name    num aa      1 bb      2 cc      4 dd      4 ee      2 一条语句实现如下:name aa,bb,cc,dd,ee DECLARE @STR VARCHAR(8000)SELECT @STR=ISNULL(@STR+',','')+name FROM (SELECT DISTINCT NAME FROM A)AS TSELECT @STR问题描述:无论是在sql 2000,还是在sql 2005 中,都没有提供字符串的聚合函数,  所以,当我们在处理下列要求时,会比较麻烦:有表tb, 如下:id    value1     aa1     bb2     aaa2     bbb2     ccc需要得到结果:id     values1      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 行受影响)--*/写个函数或者使用XML,直接就可以调用了
[解决办法]
探讨

引用:
select ltrim(id)+',' from [tb] for xml path('')


生成的列名字好长啊 是这样的XML_F52E2B61-18A1-11d1-B105-00805F49916B

我加上一个别名 改成这样的不行,该怎么弄?
select ltrim(id)+',' as A from [tb] for x……

读书人网 >SQL Server

热点推荐