将一列数据查询显示成一行
2013-04-17 22:08
295 查看
T-SQL学习:将一列数据查询显示成一行
前几天,刚参加工作的同学提一出问题:SQL Server中如何将一列数据以一行的方式显示出来?当时在看有关SQL中行列互转的问题,便以行列互转的方式考虑了一下,没有得出解决方法;后又到园子里搜索了一下,也没搜索到比较好的方法,有些方法又太复杂,以目前的水平还吃不透,因为他的问题就比较简单,没考虑程序中的处理,也没说大数据量时会怎么样,只是单纯地想一想如何实现?
之后试出来了一个方法,比较简单,以下列出代码:
--步骤1:准备测试用的表和数据 IF OBJECT_ID('report') IS NOT NULL --当前数据库中如果已存在report表,则删除 DROP TABLE report GO CREATE TABLE report --创建report测试表 ( stuName NVARCHAR(20) NOT NULL, stuReport DECIMAL(12,0) NULL ) GO INSERT INTO report(stuName,stuReport) --往表中插入测试数据 SELECT '王小芳',80 UNION ALL SELECT '林志强',75 UNION ALL SELECT '刘瑞英',97 UNION ALL SELECT '赵华飞',65 UNION ALL SELECT '张锦云',55 UNION ALL SELECT '张建国',67 GO --查询表中数据 SELECT stuName,stuReport FROM report ORDER BY stuReport GO
表中的数据如图所示:
现在将成绩一列以一行的方式查询显示出来,代码如下:
--步骤2:实现一列转一行 DECLARE @var NVARCHAR(4000) SET @var='' SELECT @var=@var+','+CAST(stuReport AS NVARCHAR(10))+ ' AS ''column'+CAST(stuReport AS NVARCHAR(10))+'''' --自定义列名显示 FROM report --将report表中的stuReport数据转换成字符串拼接进@var变量,每条数据之间以英文逗号分隔 ORDER BY stuReport SET @var=STUFF(@var,1,1,'') --去掉@var中的第一个逗号 SELECT @var --测试输出拼好的@var EXEC('SELECT '+@var) --在@var前添加SELECT关键字,组成一条SELECT语句,并执行这条语句 GO
拼接好的@var变量的值如下:
55 AS 'column55',65 AS 'column65',67 AS 'column67',75 AS 'column75',80 AS 'column80',97 AS 'column97'
在此字符串前再拼接上SELECT(注意有一空格),即可组成一条SELECT语句,再通过EXEC执行,最终得到的效果如下图所示:
了解了代码实际情况后,大家都看出这是一个有点投机取巧的方式,比较傻瓜式;第一次发表随笔,以后会继续努力!
相关文章推荐
- T-SQL学习:将一列数据查询显示成一行
- (转)Oracle一列的多行数据拼成一行显示字符
- datagridview1表一列作为別一个datagridview2表查询条件,单击datagridview1单元格显示datagridview2表数据
- sqlserver把一列中的多行数据在一行显示
- sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果
- 加载数据库表全部数据到GridView控件,但通过查询条件在GridView显示一行或几行数据
- sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果
- 模拟ORACLE wm_concat函数(把一列中的多行数据在一行显示)
- Oracle一列的多行数据拼成一行显示字符
- Oracle一列的多行数据拼成一行显示字符
- hibernate查询数据是为什么只显示一行数据
- 导入excel 文件解析,一行数据,有一列分两行显示,解析时如何 合为一行?
- 将表查询出来的一列数据变为一行
- Oracle一列的多行数据拼成一行显示字符
- 一个简单的方法查询一列数据为一行
- union all用法,两个查询结果,一起显示,(一般最后添加一行汇总数据可以用这个方法)
- sqlserver中,如何把一列中的多行数据在一行显示
- (转)Oracle一列的多行数据拼成一行显示字符
- SQL查询一列数据,结果为用特殊符号分割的一行数据
- 用SQL语句实现随机查询数据并不显示错误数据的方法