首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个转换的有关问题,

2012-12-16 
一个转换的问题,急!!!!!!!!!!!!!!CREATE TABLE T(id INT IDENTITY(1,1),name VARCHAR(50))INSERT INTO T(n

一个转换的问题,急!!!!!!!!!!!!!!


CREATE TABLE T(
id INT IDENTITY(1,1),
name VARCHAR(50)
)
INSERT INTO T(name)
SELECT '张三' union
SELECT '李四' union
SELECT '王五'
SELECT * FROM t
/*
得到的结果
id  name
1李四
2王五
3张三
*/
/*
想要的结果
id     name
1,2,3  李四,王五,张三
*/
求高人帮解,不胜感激

[最优解释]
--CREATE TABLE R
--(
--    id INT ,
--    RelationId INT,--对应T表中的id
--)
--INSERT INTO R(id,RelationId)
--SELECT 1,2 UNION
--SELECT 1,3 UNION
--SELECT 2,1 UNION
--SELECT 2,3 UNION
--SELECT 3,1 UNION
--SELECT 3,2

--CREATE TABLE T(
--id INT IDENTITY(1,1),
--name VARCHAR(50)
--)
--INSERT INTO T(name)
--SELECT '张三' union
--SELECT '李四' union
--SELECT '王五'
--SELECT * FROM t



;WITH test AS 
(
SELECT r.id,RelationId,t.name
FROM t INNER JOIN r ON t.id=r.RelationId
)

--SELECT * FROM test


select a.id,
stuff((select ','+CONVERT(VARCHAR(10),RelationId) from test b 
       where b.id=a.id 
       for xml path('')),1,1,'') 'RelationId',
       stuff((select ','+CONVERT(VARCHAR(10),name) from test b 
       where b.id=a.id 
       for xml path('')),1,1,'') 'name'
from test a
group by  a.id
/*
id          RelationId                                                                                                                                                                                                                                                       name
----------- ---------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------


1           2,3                                                                                                                                                                                                                                                              王五,张三
2           1,3                                                                                                                                                                                                                                                              李四,张三
3           1,2                                                                                                                                                                                                                                                              李四,王五



*/






/*
id                                                                                                                                                                                                                                                               name
---------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------
1,2,3    
*/


[其他解释]

CREATE TABLE T(
id INT IDENTITY(1,1),
name VARCHAR(50)
)
INSERT INTO T(name)
SELECT '张三' union
SELECT '李四' union
SELECT '王五'
declare @id varchar(100)
declare @name varchar(100)
SELECT @id=isnull(@id+',','')+convert(varchar(10),id),@name=isnull(@name+',','')+[name] FROM t
select @id as id,@name as [name]

[其他解释]
SELECT STUFF((SELECT ','+LTRIM(id) FROM t FOR XML PATH('')),1,1,'') AS id,
STUFF((SELECT ','+name FROM t ORDER BY name FOR XML PATH('')),1,1,'') AS NAME
/*
idname
1,2,3李四,王五,张三
 */

[其他解释]
引用:
额~~~~那不打扰你了。月底了,搞好了结贴,


这。。。
[其他解释]
CREATE TABLE T(
id INT IDENTITY(1,1),
name VARCHAR(50)
)
INSERT INTO T(name)
SELECT '张三' union
SELECT '李四' union
SELECT '王五'
SELECT * FROM t



SELECT DISTINCT  stuff((select ','+CONVERT(VARCHAR(10),id) from t b        
       for xml path('')),1,1,'') 'id',


stuff((select ','+name from t c       
       for xml path('')),1,1,'') 'name'
from t a
/*
id                                                                                                                                                                                                                                                               name
---------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------
1,2,3    
*/


[其他解释]
结果没截全。
id                                                                                                                                                                                                                                                               name
---------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------


1,2,3                                                                                                                                                                                                                                                            李四,王五,张三


[其他解释]
引用:
结果没截全。SQL code
id                                                                                                                                                                                     ……

不要用文本格式显示结果 就不会出现这种问题了。
[其他解释]
各位不好意思,漏了一个条件,希望大家帮我继续解决,如感觉分不够,请回帖告知,我可以加分的

CREATE TABLE R
(
id INT ,
RelationId INT,--对应T表中的id
)
INSERT INTO R(id,RelationId)
SELECT 1,2 UNION
SELECT 1,3 UNION
SELECT 2,1 UNION
SELECT 2,3 UNION
SELECT 3,1 UNION
SELECT 3,2
/*
想要的结果
 RelationID id  Name
 12,3 王五,张三
 21,3李四,张三
 31,2 李四,王五
*/

[其他解释]
分不够分啊~~~~其他人你也不好意思不给吧
[其他解释]
引用:
分不够分啊~~~~其他人你也不好意思不给吧

没事,只要帮忙解决,肯定加分,先加20分以表诚意
[其他解释]
还没结贴?还有问题吗?
------其他解决方案--------------------


引用:
还没结贴?还有问题吗?

我正在搞联合查询的问题,然后试试这个方法
[其他解释]
额~~~~那不打扰你了。月底了,搞好了结贴,
[其他解释]

select r.relationid,
stuff(
(
select ','+[name] from r as rr,t where rr.id=t.id and r.relationid=rr.relationid order by rr.id for xml path('')
),1,1,''
) as [name],
stuff(
(
select ','+convert(varchar(10),rr.id) from r as rr,t where rr.id=t.id and r.relationid=rr.relationid order by rr.id for xml path('')
),1,1,''
) as id
from r
order by r.relationid

热点排行