SQL多行变一列
2011-07-20 21:49
120 查看
IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID('[TUSER]') AND OBJECTPROPERTY(id, 'IsUserTable') = 1 )
DROP TABLE TUSER
CREATE TABLE TUSER
(id INT IDENTITY(1, 1)NOT NULL ,
UserName VARCHAR(50) ,
Code VARCHAR(50) NULL
)
SET IDENTITY_INSERT TUSER ON
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User1', 'A' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User1', 'B' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User2', 'C' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User2', 'D' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User2', 'E' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User3', 'F' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User3', 'G' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User3', 'H' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User3', 'I' )
SET IDENTITY_INSERT TUSER OFF
--按某一列出结果的
SELECT B.username ,LEFT(UserList, LEN(UserList) - 1) AS list
FROM ( SELECT username ,
( SELECT code + ',' FROM tuser WHERE username = A.username ORDER BY ID FOR XML PATH('')
) AS UserList
FROM Tuser A GROUP BY username
) B
--找符合条件的某一列数据
--法一
SELECT LEFT(userlist, LEN(userlist) - 1) list
FROM ( SELECT ( SELECT code + ',' FROM TUSER WHERE 1 = 1 ORDER BY ID FOR XML PATH('')
) AS userlist
) B
--法二
DECLARE @list VARCHAR(MAX)
SET @list = ''
SELECT @list = @list + code + ',' FROM tuser
SELECT LEFT(@list, LEN(@list) - 1) AS list
DROP TABLE TUSER
CREATE TABLE TUSER
(id INT IDENTITY(1, 1)NOT NULL ,
UserName VARCHAR(50) ,
Code VARCHAR(50) NULL
)
SET IDENTITY_INSERT TUSER ON
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User1', 'A' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User1', 'B' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User2', 'C' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User2', 'D' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User2', 'E' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User3', 'F' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User3', 'G' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User3', 'H' )
INSERT TUSER( id, UserName, code )VALUES ( 1, 'User3', 'I' )
SET IDENTITY_INSERT TUSER OFF
--按某一列出结果的
SELECT B.username ,LEFT(UserList, LEN(UserList) - 1) AS list
FROM ( SELECT username ,
( SELECT code + ',' FROM tuser WHERE username = A.username ORDER BY ID FOR XML PATH('')
) AS UserList
FROM Tuser A GROUP BY username
) B
--找符合条件的某一列数据
--法一
SELECT LEFT(userlist, LEN(userlist) - 1) list
FROM ( SELECT ( SELECT code + ',' FROM TUSER WHERE 1 = 1 ORDER BY ID FOR XML PATH('')
) AS userlist
) B
--法二
DECLARE @list VARCHAR(MAX)
SET @list = ''
SELECT @list = @list + code + ',' FROM tuser
SELECT LEFT(@list, LEN(@list) - 1) AS list
相关文章推荐
- SQL SERVER 用sql语句将一列数据拼接成一个字符串
- 用SQL实现结果集的各种转换----结果集转成一列
- sql统计排行同一列记录
- T_SQL 将一列多行数据合并为一行
- SQL将一列多行数据合并
- SQL技巧(多行合并一列)
- 关于查找表中一列里面相同数据的SQL
- sql 查询结果增加一列,列名固定,值也固定(mysql可行,其他未知)
- SQLSqlserver中如何将一列数据拼接成一个字符串
- 数据统计例子,相关子查询!(SQL 中循环操作一列数据方法)
- SQLSqlserver中如何将一列数据,不重复的拼接成一个字符串
- ms sql server拼接一列的多行内容
- 将所有符合条件的结果拼接成一列并用逗号隔开的一个sql语句
- SQL----查询多行在一列显示
- sql语句中查询出的数据添加一列,并且添加默认值
- SQL中排除某一列代码字段含有字母的记录
- Oracle SQL 两列合并为一列,并且可以自定义添加一些字符
- 通过sql语句找到列名字为‘date_3’的那一列对比的数据库字段不是固定的,要在date_1到date_10中筛选
- SQL 给一个数据查询结果添加一列从0到n的序号
- sql中在查询时两列合并为一列