sql行变列的思路
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql行变列的思路相关的知识,希望对你有一定的参考价值。
已知:数据库
name lesson score
张三 语文 90
李四 数学 94
王五 英语 87
张三 数学 77
李四 语文 80
王五 数学 68
求:如何输出下面的列表(行变列)
语文 数学 英语
张三 90 94
李四 80 94
王五 68 87
答案:
select name,
(select score from t_test where name=o.name and lesson='语文') 语文,
(select score from t_test where name=o.name and lesson='数学') 数学,
(select score from t_test where name=o.name and lesson='英语') 英语
from t_test o group by name
这只是一个静态的sql语句,也就是说,语文,数学和英语这三门课程我们是假定知道的。如果不知道呢?那就只能动态的拼sql语句了。先从数据库中取这些课程然后再拼sql。
请问这里的思路是什么呢?谢谢!
(1):利用select的逐行读取的特性,构造包含列名的SQL的字符串,例如你的答案里的(select score from t_test where name=o.name and lesson='语文') 语文
(2):然后把该字符串和select,from from t_test o group by name合并成类似你的答案中的静态SQL语句,然后执行 参考技术A 请参考这个帖子中
http://zhidao.baidu.com/question/157388436.html
我的回答
用一条查询语句将列变成行 Sqlserver
我的数据是:
1 深圳
2 上海
3 湖南
4 北京
...
我要的结果:深圳 上海 湖南 北京 只用一条Sql语句,不要用存储过程类似的
还有就是,我想在一个页面中显示出图片类似的效果
http://hi.baidu.com/%D7%ED%D6%AE%BB%EA/album/item/3c309edc61e149f077c63873.html
上面的城市都是从数据库中查询出来的,到达结尾处就自动换行(或者说限制每行的数量)(Asp.net)谢谢各位了!一定加分!!
参考资料:上海
以上是关于sql行变列的思路的主要内容,如果未能解决你的问题,请参考以下文章