请教SQL语句
Int A Int B Int C
1 1 123
1 1 234
1 3 12
2 1 56
2 1 88
希望得到如下查询结构,如果写SQL语句?
Int A Int B VarChar C
1 1 123,234
1 3 12
2 1 56,88
作者: d6f9b 发布时间: 2011-06-10
select A,B C=stuff((select ','+c from tb where A=t.A and B=t.B for xml path('')),1,1,'') from tb t
作者: zy112429 发布时间: 2011-06-10
select A,B C=stuff((select ','+c from tb where A=t.A and B=t.B for xml path('')),1,1,'') from tb t group by A,B
作者: zy112429 发布时间: 2011-06-10
select IntA ,IntB,max(case intB when intB then intC end)as VarcharC) from TEST group by IntA,IntB
作者: chuanzhang5687 发布时间: 2011-06-10
create function f_str(@a int ,@b int) returns varchar(1000) as begin select isnull(ltrim(c)+',','') from test where a=@a and b=@b end go select a,b,dbo.f_str(a,b) from test
作者: cd731107 发布时间: 2011-06-10
SELECT *
FROM(
SELECT DISTINCT [id]
FROM [test]
)A
OUTER APPLY(
SELECT
[nameStr]= STUFF(REPLACE(REPLACE(
(
SELECT [name] FROM [test] N
WHERE [id] = A.id
FOR XML AUTO
), '<N name="', ','), '"/>', ''), 1, 1, '')
)M
作者: xuexiaodong2009 发布时间: 2011-06-10
declare @tb table(A int,B int,C int) insert @tb select 1 ,1 ,123 insert @tb select 1 ,1 ,234 insert @tb select 1 ,3 ,12 insert @tb select 2 ,1 ,56 insert @tb select 2 ,1 ,88 select a,B,replace((select C as 'data()' from @tb where a.A=a and a.B=B for xml path('')),' ',',') as c from @tb a group by a,B /* (1 行受影响) (1 行受影响) (1 行受影响) (1 行受影响) (1 行受影响) a B c ----------- ----------- --------- 1 1 123,234 1 3 12 2 1 56,88 (3 行受影响) */
作者: ldslove 发布时间: 2011-06-10
SQL code
create function f_str(@a int ,@b int) returns varchar(1000)
as
begin
select isnull(ltrim(c)+',','') from test where a=@a and b=@b
end
go
select a,b,dbo.f_str(a,b) from……
SQL code
--上面的改一下 create function f_str(@a int ,@b int) returns varchar(1000) as begin declare @sql varchar(1000) select isnull(@sql+',','')+ltrim(c) from test where a=@a and b=@b end go select a,b,dbo.f_str(a,b) from test
作者: cd731107 发布时间: 2011-06-10
作用:
STUFF函数将字符串插入另一字符串。它在第一个字符串中从开始位置删
除指定长度的字符;然后将第二个字符串插入第一个字符串的开始位置。
语法:
STUFF ( character_expression , start , length ,character_expression )
参数:
character_expression
一个字符数据表达式。character_expression可以是常量、变量,也可
以是字符列或二进制数据列。
start
一个整数值,指定删除和插入的开始位置。如果start或length为负,
则返回空字符串。如果start比第一个character_expression长,则返
回空字符串。start可以是bigint类型。
length
一个整数,指定要删除的字符数。如果length比第一个
character_expression长,则最多删除到第一个character_expression
中的最后一个字符。Length可以是bigint类型。
返回类型:
如果character_expression是受支持的字符数据类型,则返回字符数据。
如果character_expression是一个受支持的 binary 数据类型,则返回二
进制数据。
注释:
如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长
度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删
除到第一个字符串中的最后一个字符。如果结果值大于返回类型支持的最
大值,则产生错误。
、 FOR XML AUTO
将结果转换为XML结构,例如对于上面2中的student表,执行以下语句
SELECT *
FROM [student]
FOR XML AUTO
作者: xuexiaodong2009 发布时间: 2011-06-10
SQL code
select IntA ,IntB,max(case intB when intB then intC end)as VarcharC)
from TEST group by IntA,IntB
作者: chuanzhang5687 发布时间: 2011-06-10
select A,B,C=left(C,len(C)-1) from (select t2.A,t2.B, C=(select convert(varchar,C),',' from tb t1 where t1.A=t2.A and t1.B=t2.B for xml path('')) from tb t2 group by t2.A,t2.B) t
作者: X_0 发布时间: 2011-06-10
数据: id col ----- ------ 1 a 1 b 2 a 2 b 2 c 期望得到结果: id col ------ ----------- 1 a,b 2 a,b,c ---------------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date : 2009-03-15 10:19:22 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation -- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2) -- Blog : http://blog.csdn.net/htl258 ---------------------------------------------------------------------------------- --> 生成测试数据表: [tb] IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb] GO CREATE TABLE [tb] ([id] [int],[col] [nvarchar](10)) INSERT INTO [tb] SELECT '1','a' UNION ALL SELECT '1','b' UNION ALL SELECT '2','a' UNION ALL SELECT '2','b' UNION ALL SELECT '2','c' --SELECT * FROM [tb] -->SQL查询如下: --SQL2000以上版本: IF OBJECT_ID('dbo.f_str')>0 DROP FUNCTION dbo.f_str GO CREATE FUNCTION dbo.f_str ( @id INT ) RETURNS VARCHAR(1000) AS BEGIN DECLARE @r VARCHAR(1000) SELECT @r = ISNULL(@r+',', '') + col FROM tb WHERE id = @id RETURN @r END GO SELECT DISTINCT id,dbo.f_str(id) col FROM tb /* id col ----------- --------------------- 1 a,b 2 a,b,c (2 行受影响) */ -->SQL2005以上版本: SELECT DISTINCT id, STUFF( ( SELECT ','+col FROM tb t WHERE id = tb.id FOR XML PATH('') ), 1, 1, '' ) AS col FROM tb /* id col ----------- --------------------- 1 a,b 2 a,b,c (2 行受影响) */
作者: jxqn_liu 发布时间: 2011-06-10